深度優先搜尋(一)

2021-10-13 04:32:34 字數 1236 閱讀 3951

輸入n個數字,輸出這n個陣列的全排列。

分析:首先需要乙個資料結構來確定還有哪些資料沒有被排序,因此有了bool陣列is_in,然後有乙個陣列用來裝已經被排列的陣列,因此有了陣列bucket。

結束條件是當選了n個數字以後,也就是沒有數字可以放入bucket的時候,結束深度優先搜尋。

選擇列表就是剩餘未排列的數字,這裡需要用is_in來判斷是否已經被排列,如果被排列就下乙個數字。

**

#include

using

namespace std;

const

int max_num =

100;

int n;

int ans=0;

int number[max_num]

;int bucket[max_num]

;bool is_in[max_num]

;void

dfs(

int step)

cout

for(

int k=

1;k<=n;k++)}

return;}

intmain()

cout<<

"請輸入需要全排列的數字的個數"

>n;

cout<<

"請輸入全排列的數字"

int i=

1;i<=n;i++

)dfs(1

);return0;

}

給定乙個非負整數陣列,a1, a2, …, an, 和乙個目標數,s。現在你有兩個符號 + 和 -。對於陣列中的任意乙個整數,你都可以從 + 或 -中選擇乙個符號新增在前面。

返回可以使最終陣列和為目標數 s 的所有新增符號的方法數。

這個題也可以用動態規劃來解,等我學到動態規劃的時候再重新寫一遍

class

solution

intdfs

(vector<

int>

&nums, uint target,

int left)

};

超時了

class

solution

intdfs

(vector<

int>

&nums, uint target,

int left)

};

深度優先搜尋(一)

深度優先搜尋 dfs 是一種基本的圖演算法,主要針對圖和樹,英文縮寫 dfs。走迷宮 深度優先搜尋的重要例子 走迷宮。用迷宮代替圖,通道代替邊,路口代替定點,那麼我們就可以將迷宮看成是乙個圖。要探索迷宮中的所有通道,我需要這樣做 和dfs思想是一樣的 圖例 題目 迷宮由n行m列的單元格組成,每個單元...

訓練一 深度優先搜尋

例1.poj 1979 red and black 題意 由 為起點,周圍最多有 跟它相連通,不能越過 本身也算乙個 輸入輸出 sample input 6 9.11 9 11 6 7 7.0 0sample output 4559613 include using namespace std ch...

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...