1-N から異なる可能なサブセットを見つけるために、このプログラムを作成しました。このコードは N=5 までは問題なく動作しますが、それ以降は間違った出力になります。バグは何ですか?
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n, i,j ;
cin>>n;
int limit = 1<<n;
int arr[limit];
for( i=0; i<limit; i++)
arr[i] = i+1;
for( i=0; i<limit; i++){
for( j=0; j<limit; j++){
( i & 1<<j)? printf("%d\t", arr[j]) : 0;
}
cout<<endl;
}
cout<<(1<<n)<<endl;
return 0;
}