dfs特征(元素不重復)

如果元素不重復使用dfs,可重復使用dp(不過重不重復這兩個都可以解決,只是好理解)


  1. 比如beautiful arrangement 4個元素
    坑是pos 遍歷1-4 把坑+1 坑從1開始增加 當坑(pos)>5 return;
    先填pos = 1 ,used記錄是否訪問
    1234之后,回溯
    然后填pos = 2
    然后3和4
    NQUEEN問題也是不過是一行一行的填坑
  2. 代碼固定
    visited記錄1
    helper()
    visited記錄0
  3. 理解
    pos是坑
    開始給1填 填好1234
    回溯
    填坑
  4. 上一次和當前
    helper(N, pos + 1, used);
    為什么選的坑是pos。
分析
  1. pos = 3 結束?(pos = 3時 有 i = 3和4)
    i = 3 時,pos = 3(回溯直接是回復狀態 是回溯到i = 3的時候)
    i = 4 , pos =3
    pos = 2 結束?(i = 3和4)
    i = 2 pos = 2 (回溯直接是回復狀態)
    i = 3 pos = 2
    i = 4 pos = 2
  2. 如果不能符合,則每次if都過不去,然后i值一直迭代 直到回溯上個規模
  3. i = 1 時,會執行
    used[1] = 1
    help()
    used[1] = 0 //重置狀態
    但是i = 2 的時候為什么不能把2填到pos = 1 中?
    因為這時候的規模還在 i = 1 used[1] 被占了,
    只有在i = 1 這輪循環結束之后才能把2放入pos = 1 中
    也因為這樣解才有這樣的規律(先填pos = 1 的所有解遍歷之后,遍歷2 然后3 )
  4. pos = 3 上次是pos = 2
    pos = 3 結束 ,回溯到pos = 2
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容