如何快速取得一個二進位制狀態的所有子狀態

畫船聽雨發表於2014-04-04

從鵬哥那裡盜來的,不錯啊。

程式碼中的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;
}



相關文章