題目連接ios
從 1~n 這 n 個整數中隨機選取任意多個,輸出全部可能的選擇方案。c++
輸入一個整數n。spa
每行輸出一種方案。code
同一行內的數必須升序排列,相鄰兩個數用剛好1個空格隔開。blog
對於沒有選任何數的方案,輸出空行。遞歸
本題有自定義校驗器(SPJ),各行(不一樣方案)之間的順序任意。ci
1≤n≤151≤n≤15get
3
3 2 2 3 1 1 3 1 2 1 2 3
#include<iostream> #include<cstring> #include<algorithm> using namespace std; int n; void dfs(int u,int state) { if(u==n)//表明枚舉結束,開始輸出 { for(int i=0;i<n;i++) if(state >> i & 1)//若是state右移i位,其值等於1 cout<<i+1<<' '; cout<<endl; return; } dfs(u+1,state);//不用u這個數 dfs(u+1,state | 1 << u);//state的第u位 置爲1 用u這個數 } int main() { cin>>n; dfs(0,0);//左邊的0表示第幾個數,右邊的表示狀態 return 0; }