算法 回溯求排列組合,子集問題的總結

leetcode上有許多用回溯求排列組合,子集的題目
leetcode46
leetcode47 我的思路可看這裏
leetcode77 我的思路可看這裏
leetcode39
leetcode40
leetcode216
leetcode78
leetcode90 我的思路可看這裏

總結一下
用回溯法求這類排列組合,子集問題基本模型都是幾乎一樣的(看我的思路里面也有代碼),只需要根據實際題目稍作變換即可

  1. 原序列含重複元素,先排序 ,增加剪枝條件判斷當前值是否和前一個值相等,是並且前一個沒考慮過則跳過當前值(不理解的話可看我的47題思路)
  2. 組合或子集如[1,2],[2,1]算重複的話,可傳參下次序列循環的開始位置(一直往後,不會再考慮前面的元素)
  3. 組合或子集如[1,2],[2,1]不算作重複的話,每次序列循環都從0開始即可,多增加一個判斷當前值是否考慮過的boolean數組即可

歡迎大家交流補充
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章