遞迴實現指數型列舉

2021-10-09 17:32:23 字數 1091 閱讀 6737

採用遞迴的思路,就是:

看要列舉幾個數,幾個數他遞迴的層數就是幾層

因為每個數只有選和不選兩種情況,所以他的分支只有兩個,是乙個二叉樹

然後進行先序遍歷,遍歷到三個的時候就會輸出當前遍歷的結果。

遞迴:一層有幾個分支,那麼遞迴函式裡面就會有幾個遞迴函式

然後需要遞迴幾層就在終止條件那邊進行判斷:

//st[u] = 0; 這裡是要恢復現場的,因為要保證進入下乙個分支的時候是由根節點的狀態進入的

//但是這邊只有兩個分支,選跟不選,所以可以省略

st[u]=0

;dfs

(u+1);

//st[u] = 0;

}int

main()

當改變樹的狀態的時候需要恢復現場,要保證進入下乙個分支的時候是以根節點的狀態進入的,而不是兄弟節點回溯完的狀態進入的

遞迴實現指數型列舉

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

遞迴實現指數型列舉

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

遞迴實現指數型列舉

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