代碼隨想錄算法訓(xùn)練營第二十四天|回溯算法理論、77組合

回溯算法模板

void backtracking(參數(shù)) {

? ? if (終止條件) {

? ? ? ? 存放結(jié)果;

? ? ? ? return;

? ? }

? ? for (選擇:本層集合中元素(樹中節(jié)點孩子的數(shù)量就是集合的大?。? {

? ? ? ? 處理節(jié)點;

? ? ? ? backtracking(路徑,選擇列表); // 遞歸

? ? ? ? 回溯,撤銷處理結(jié)果

? ? }

}

回溯和遞歸是相輔相成的


77.?組合??

遞歸函數(shù)的返回值以及參數(shù):

在這里要定義兩個全局變量,一個用來存放符合條件單一結(jié)果,一個用來存放符合條件結(jié)果的集合

參數(shù):n和k、startIndex防止出現(xiàn)重復(fù)的組合

回溯函數(shù)終止條件:

終止條件代碼:

if(path.size()==k){result.push_back(path);return;}

單層搜索的過程

回溯法的搜索過程就是一個樹型結(jié)構(gòu)的遍歷過程,在如下圖中,可以看出for循環(huán)用來橫向遍歷,遞歸的過程是縱向遍歷

publicvoidbacktracking(intn,intk,intstartIndex){if(path.size()==k){result.add(newArrayList<>(path));return;}for(inti=startIndex;i<=n;i++){path.add(i);backtracking(n,k,i+1);path.removeLast();}}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容