採用遞迴的思路,就是:
看要列舉幾個數,幾個數他遞迴的層數就是幾層
因為每個數只有選和不選兩種情況,所以他的分支只有兩個,是乙個二叉樹
然後進行先序遍歷,遍歷到三個的時候就會輸出當前遍歷的結果。
遞迴:一層有幾個分支,那麼遞迴函式裡面就會有幾個遞迴函式
然後需要遞迴幾層就在終止條件那邊進行判斷:
//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 ...