算法训练营08-分治和回溯
分治算法模板
Javaprivate static int divide_conquer(Problem problem, ) { if (problem == NULL) { int res = process_last_result(); return res; } subProblems = split_problem(problem) res0 = divide_conquer(subProblems[0]) res1 = divide_conquer(subProblems[1]) result = process_result(res0, res1); return result; }預(yù)習(xí)題目
括號(hào)生成22
乘方結(jié)果50
子集78
實(shí)戰(zhàn)題目
多數(shù)元素169?(簡(jiǎn)單、但是高頻)
字符和數(shù)字17
8皇后問(wèn)題51
感覺(jué)分治和回溯就是對(duì)問(wèn)題的所有可能性進(jìn)行枚舉的過(guò)程,一旦一個(gè)問(wèn)題轉(zhuǎn)化為一個(gè)可以枚舉的問(wèn)題之后一般都是可以比較方便的實(shí)現(xiàn)邏輯了,可以在中間劍指之類的
但是對(duì)于一個(gè)字符串的全排問(wèn)題,感覺(jué)又有點(diǎn)不像回溯,更像是分治,一種特殊的分治思路,當(dāng)然也是通過(guò)迭代來(lái)完成的
像8皇后問(wèn)題,被稱為典型的回溯問(wèn)題,就是不斷判斷當(dāng)前情況是否滿足條件,大概明白了,回溯應(yīng)該是判斷當(dāng)前這一步完了整體是否滿足條件,而有些分治問(wèn)題是沒(méi)有這一步的,回溯回溯就是每走一步都回過(guò)頭來(lái)看看問(wèn)題當(dāng)前的部分結(jié)果解法是否依然滿足需求。但是比如字符串排列的題,則沒(méi)有這個(gè)回溯的過(guò)程,只是不斷的分支遞歸的過(guò)程。
總結(jié)
以上是生活随笔為你收集整理的算法训练营08-分治和回溯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 算法训练营07-递归使用练习
- 下一篇: 算法训练营09-深度优先和广度优先