這等價於每個整數可以選可以不選,所有可能的方案總數有2的n次方種,通過前兩節的學習我們已經知道可以進行一次迴圈,利用位運算來列舉所有的選擇方案。這一次我們使用遞迴來求解,在每一次遞迴中分別嘗試某個數「選」還是「不選」兩條分支,將尚未確定的整數數量減少1,從而轉化為乙個規模更小的同類問題。
#include using namespace std;
vectorchosen;
void calc(int x)
//「不選x」分支
calc(x+1);
//「選x」分支
chosen.push_back(x);//記錄x已經被選擇
calc(x+1);//求解子問題
chosen.pop_back();//準備回溯到上乙個問題之前,還原現場
}int main()
遞迴 92 遞迴實現指數型列舉
從 1 n 這 n 個整數中隨機選取任意多個,輸出所有可能的選擇方案。輸入格式 輸入乙個整數n。輸出格式 每行輸出一種方案。同一行內的數必須公升序排列,相鄰兩個數用恰好1個空格隔開。對於沒有選任何數的方案,輸出空行。本題有自定義校驗器 spj 各行 不同方案 之間的順序任意。資料範圍 1 n 151...
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 這道題要求同一行內的數必須公升序排列,相...