bit全探索のテンプレートと拡張版
(1)N個の0,1から成る2^N個の配列を生成
int N; cin >> N; for (int S = 0; S < 1 << N; S++) { //作成 vector<int>A; rep(i, N) { A.push_back(S >> i & 1); } //操作 rep(i, N) { cout << A[i] << ' '; } cout << endl; }
入力例
3
出力例
0 0 0
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1
(2)N個の0,1…M-1から成るM^N個の配列を生成
int N; int M; cin >> N >> M; for (int S = 0; S < pow(M,N); S++) { //作成 int s = S; vector<int>A; rep(i, N) { A.push_back(s%M); s /= M; } //操作 rep(i, N) { cout << A[i] << ' '; } cout << endl; }
入力例
2 3
出力例
0 0
1 0
2 0
0 1
1 1
2 1
0 2
1 2
2 2