深度優先遍歷很容易列出所有可能 這裡我們分情況 標註幾個易錯的點
不重複組合
不重複組合 則表明 如果我們取k=3(取n1、n2、n3) 則n1從1-9中任取 但n1需要排除n1 同理n3需要排除n1、n2
**如下
public static void dfs3(int start, listnums, list> ret)
for (int i = start; i < 10; i++)
}
【注】這裡有個易錯點 就是遞迴時start的傳值 一定要是++start++start 組合結果如下
而start+1結果則是
可重複組合 即全排列 則n1、n2、n3均有9種可能
public static void dfs3(int start, listnums, list> ret)
for (int i = start; i < 10; i++)
}
深度優先遍歷 廣度優先遍歷
用棧進行儲存元素。訪問頂點 頂點入棧,以便記住它 標記頂點,以便不會再訪問它 2 訪問規則 a.如果可能,訪問乙個鄰接的未訪問頂點,標記它,併入棧。b.當不能執行a時 沒有鄰接的未訪問頂點 如果棧不為空,就從棧中彈出乙個頂點。c.如果不能執行規則a和b,就完成了整個搜尋過程。3 實現 基於以上規則,...
深度優先遍歷
第一步 從開始節點查詢可達節點,如果有沒到過的可達節點則第二部,否則第三步 第二部 便利到下乙個可達節點,記錄下該節點已經到達節點 第三步 回到上一步的節點再從第一步開始 乙個節點對應他的可達節點用map表示,map的key和value分別是integer和list 用來存放key對應的節點 遍歷過...
深度優先遍歷 和 廣度優先遍歷
圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...