演算法很美第七章dfs 深度優先搜尋 例題C 實現

2021-10-04 06:27:23 字數 3554 閱讀 1693

/*

輸入:005300000

800000020

070010500

400005300

010070006

003200080

060500009

004000030

000009700

程式應該輸出:

145327698

839654127

672918543

496185372

218473956

753296481

367542819

984761235

521839764

再例如,輸入:

800000000

003600000

070090200

050007000

000045700

000100030

001000068

008500010

090000400

程式應該輸出:

812753649

943682175

675491283

154237896

369845721

287169534

521974368

438526917

796318452

*/#include

using

namespace std;

int a[9]

[9];

//n為第n/9行第n%9列

bool

judge

(int n,

int i)

int row =

(n/9)/

3*3;

int col = n%9/

3*3;

for(

int b=row;b<=row+

2;b++

)for

(int c=col;c<=col+

2;c++

)return

true;}

void

dfs(

int n)

exit(0

);}if

(a[n/9]

[n%9])

dfs(n+1)

;else

for(

int i=

1;i<=

9;i++)}

}int

main()

dfs(0)

;return0;

}

/*輸入4

1 2 4 7

13 輸出

yes 2 4 7

*/#include

using

namespace std;

int n;

int k;

int a[25]

;vector<

int> temp;

void

dfs(

int m,

int v)

exit(0

);}if

(m==n)

return

; temp.

push_back

(a[m]);

dfs(m+

1,v-a[m]);

temp.

pop_back()

;dfs

(m+1

,v);

}int

main()

/* 

輸入10 12

w........ww.

.www.....www

....ww...ww.

.........ww.

.........w..

..w......w..

.w.w.....ww.

w.w.w.....w.

.w.w......w.

..w.......w.輸出3

*/#include

using

namespace std;

int n,m;

int cnt=0;

char a[

110]

[110];

int visited[

110]

[110]=

;void

dfs(

int i,

int j)

intmain()

cout

}

/*輸入8

輸出92

*/#include

using

namespace std;

int n;

int cnt=0;

int pos[16]

;void

dfs(

int k)

int j;

for(

int i=

0;i(j==k)

}return;}

intmain()

/*輸入6

輸出 1 4 3 2 5 6

1 6 5 2 3 4

*/#include

using

namespace std;

int n;

int isprime[32]

=;vector<

int> a;

int visited[16]

=;void

dfs(

int k)

return;}

for(

int i=

2;i<=n;i++)}

return;}

//尤拉篩求素數

void

getprime()

for(

int j=

0;j<

2*n;j++)}

// 列印求得的素數

// int a=prime.size();

// for (int i=0;i// cout<}

intmain()

/*

輸入7 3

30 3

輸出abacaba

abacabcacbabcabacabcacbacaba

*/#include

using

namespace std;

int n,l,cnt=0;

string s ="";

bool

check

(char c)

return

true;}

void

dfs(

int k)

for(

char i=

'a';i<

'a'+l;i++)}

}int

main()

leetcode演算法總結 DFS深度優先搜尋

自頂向下 根節點到葉子節點 前序處理 向下傳參 自底向上 子節點到子節點 後序處理 構建二叉樹 n叉樹模板 dfs treenode root,int path 重點解讀 root left 才是指向,root root left是移動指標遍歷 父節點要傳給子節點值,則放到遞迴的形參中。void d...

演算法導論 第七章 排序

什麼是穩定排序?n個記錄的序列為 r1,r2,r3 rn 其相應的鍵值序列為 k1,k2,k3 kn 假設ki kj,若在排序前的序列中ri在rj之前,即 i注意 穩定性是排序方法本身的特性,與資料無關,換句話說,一種排序方法如果是穩定的,則對所有的資料序列都是穩定的,反過來,如果在一組資料上出現不...

演算法筆記第七章總結

top棧頂指標 清空void clear 獲取棧內元素個數int size 判空bool empty 進棧void push x 出棧void pop 取棧頂元素int top while st.empty 隊首指標front指向隊首元素的前乙個位置,隊尾指標rear指向隊尾元素。清空void cl...