給一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 ,為常量陣列
3.在方陣中找到y,找到y後在八個方向上尋找i然後進行深度搜尋.const
int n =
100+10;
struct nodenode c[n]
;char fz[n]
[n],word=
"yizhong"
;int vis[n]
[n];
int dir[
2]=,
,,,,
,,};
//分別代表八個方向
4.再來寫dfs函式for
(int i=
0;i)for
(int j=
0;j}
傳入五個引數,分別為x,y,c,k,cur;
5.最後在主函式中輸出即可.void
dfs(
int x,
int y,node c,
int k,
int cur)
else
}}
#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...