从鹏哥那里盗来的,不错啊。
代码中的i表示的是所有s中为0,i中也为0,s中为1,i中为0或者1的情况。
也就是说i表示的是s状态的所有子状态。
int main()
{
int s;
while(cin>>s)
{
print(s);
for(int i=s; i>=0; i=(i>0?(i-1)&s:-1))
{
print(i);
}
}
return 0;
}