遞迴 92 遞迴實現指數型列舉

2021-09-29 17:21:54 字數 941 閱讀 9371

從 1~n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。

輸入格式

輸入乙個整數n。

輸出格式

每行輸出一種方案。

同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。

對於沒有選任何數的方案,輸出空行。

本題有自定義校驗器(spj),各行(不同方案)之間的順序任意。

資料範圍

1≤n≤151≤n≤15

輸入樣例:

3
輸出樣例:

3

22 3

11 3

1 21 2 3

讀題要認真,注意輸出格式,注意無答案應輸出什麼

這是乙個簡單的暴力遞迴,當答案不多時可用陣列記錄答案,每一次遞迴結束後取消應該取消的標記。

思路:1.列舉選值個數 1 ~ n,

2.每次遞迴我們需要維護三個資訊,分別是可取的最小值(因為題目要求是上公升的答案)x,共需要遞迴多少次 cas ,當前是第幾次遞迴 sum。

3.遞迴出口:每遞迴一次會選出乙個值,當遞迴次數比共需遞迴得次數多的時候( sum > cas )不再填空,輸出答案並返回。

#include using namespace std;

typedef long long ll;

const int maxn = 35;

int n, vis[maxn], a[maxn];

void dfs(int x, int cas, int sum)

printf("\n");

return ;

}for(int i = x; i <= n; i++)

}}int main()

return 0;

}

92 遞迴實現指數型列舉

從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 n 15 ...

AcWing 92 遞迴實現指數型列舉

從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入乙個整數n。每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。輸入樣例 3輸出樣例 32 2 31 1 31 2 1 2 3 這道題要求同一行內的數必須公升序排列,相...

92 遞迴實現指數型別列舉

這等價於每個整數可以選可以不選,所有可能的方案總數有2的n次方種,通過前兩節的學習我們已經知道可以進行一次迴圈,利用位運算來列舉所有的選擇方案。這一次我們使用遞迴來求解,在每一次遞迴中分別嘗試某個數 選 還是 不選 兩條分支,將尚未確定的整數數量減少1,從而轉化為乙個規模更小的同類問題。includ...