算法训练营08-分治和回溯
生活随笔
收集整理的這篇文章主要介紹了
算法训练营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; }預習題目
括號生成22
乘方結果50
子集78
實戰題目
多數元素169?(簡單、但是高頻)
字符和數字17
8皇后問題51
感覺分治和回溯就是對問題的所有可能性進行枚舉的過程,一旦一個問題轉化為一個可以枚舉的問題之后一般都是可以比較方便的實現邏輯了,可以在中間劍指之類的
但是對于一個字符串的全排問題,感覺又有點不像回溯,更像是分治,一種特殊的分治思路,當然也是通過迭代來完成的
像8皇后問題,被稱為典型的回溯問題,就是不斷判斷當前情況是否滿足條件,大概明白了,回溯應該是判斷當前這一步完了整體是否滿足條件,而有些分治問題是沒有這一步的,回溯回溯就是每走一步都回過頭來看看問題當前的部分結果解法是否依然滿足需求。但是比如字符串排列的題,則沒有這個回溯的過程,只是不斷的分支遞歸的過程。
總結
以上是生活随笔為你收集整理的算法训练营08-分治和回溯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法训练营07-递归使用练习
- 下一篇: 算法训练营09-深度优先和广度优先