生活随笔
收集整理的這篇文章主要介紹了
递归实现指数型枚举
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本題鏈接
從 1~n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。
輸入格式
輸入一個整數n。
輸出格式
每行輸出一種方案。
同一行內的數必須升序排列,相鄰兩個數用恰好1個空格隔開。
對于沒有選任何數的方案,輸出空行。
本題有自定義校驗器(SPJ),各行(不同方案)之間的順序任意。
數據范圍
1≤n≤15
輸入樣例:
3
輸出樣例:
3
2
2 3
1
1 3
1 2
1 2 3
體會:根據題目找順序,然后畫出遞歸樹,然后轉化為代碼
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std
;const int N
= 16;int n
;
int state
[N
]; void dfs(int u
)
{if(u
> n
){for(int i
= 1; i
<= n
; i
++ ){if(state
[i
] == 1)printf("%d ", i
);}printf("\n");return ;}state
[u
] = 1; dfs(u
+ 1);state
[u
] = 0; state
[u
] = 2; dfs(u
+ 1);
}int main()
{scanf("%d", &n
);dfs(1);return 0;
}
總結
以上是生活随笔為你收集整理的递归实现指数型枚举的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。