DFS 單詞方陣

2021-10-04 01:14:57 字數 1636 閱讀 8507

給一n×n的字母方陣,內可能蘊含多個「yizhong」單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*代替,以突出顯示單詞。例如:

輸入:8

qyizhong

gydthkjy

nwidghji

orbzsfgz

hhgrhwth

zzzzzozo

iwdfrgng

yyyygggg

輸出:yizhong

gy*****

ni*****

oz***

hh***

zo**

i*****n

y****g

1.這道題是乙個dfs的題目,從八個方向搜尋。可以設定乙個八向的常量陣列,搜尋每乙個方向,如果滿足條件就遞迴,否則結束遞迴。當搜尋到第7個單詞『g』時,用vis儲存路徑,此次dfs也就結束了。

2.將單詞方陣存貯在fz陣列中,用vis陣列記錄是否為點的答案.定義二維陣列dir ,為常量陣列

const

int n =

100+10;

struct nodenode c[n]

;char fz[n]

[n],word=

"yizhong"

;int vis[n]

[n];

int dir[

2]=,

,,,,

,,};

//分別代表八個方向

3.在方陣中找到y,找到y後在八個方向上尋找i然後進行深度搜尋.

for

(int i=

0;i)for

(int j=

0;j}

4.再來寫dfs函式

傳入五個引數,分別為x,y,c,k,cur;

void

dfs(

int x,

int y,node c,

int k,

int cur)

else

}}

5.最後在主函式中輸出即可.

#include

#include

#include

using

namespace std;

const

int n =

100+10;

struct node

c[n]

;int vis[n]

[n];

char fz[n]

[n],word=

"yizhong"

;int dir[

2]=,

,,,,

,,};

void

dfs(

int x,

int y,node c,

int k,

int cur)

}else}}

intmain()

}}}for

(int i=

0;i) cout <}}

單詞方陣(dfs

給一nxn的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間 color red 可以 color 交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8...

P1101 單詞方陣(DFS清晰)

題目描述 給一n n的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 qyizhon...

P1101 單詞方陣 簡單dfs

給一n times nn n的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 qy...