題目鏈結
題目描述
給一 n×n 的字母方陣,內可能蘊含多個「yizhong」單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*
代替,以突出顯示單詞。例如:
輸入輸出格式輸入:
8 輸出:
qyizhong *yizhong
gydthkjy gy******
nwidghji n*i*****
orbzsfgz o**z****
hhgrhwth h***h***
zzzzzozo z****o**
iwdfrgng i*****n*
yyyygggg y******g
輸入格式:
第一行輸入乙個數 n 。(7≤n≤100 )。
第二行開始輸入 n×n 的字母矩陣。
輸出格式:
突出顯示單詞的 n×n 矩陣。
輸入輸出樣例
輸入樣例#1:
輸出樣例#1:7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
解題思路:*******
*******
*******
*******
*******
*******
*******
1.不再改變方向的解決辦法:進行dfs遞迴之前就把方向確定好,具體看**解釋
2.如何判斷是否進行形成yizhong
字串,這裡進行了乙個小技巧,從遞迴的最底層開始判斷,相當於倒序輸出
#include
using namespace std;
int n,k,flag;
char str[
105]
[105
],vertix[
105]
[105];
int next[8]
[2]=
,,,,
,,,}
;void
dfs(
int x,
int y,
int a)
int tx = x + next[a][0
];int ty = y + next[a][1
];if(tx <
0|| tx >= n || ty <
0|| ty >= n)
return;if
((str[x]
[y]==
'y'&& str[tx]
[ty]
=='i')||
(str[x]
[y]==
'i'&& str[tx]
[ty]
=='z')||
(str[x]
[y]==
'z'&& str[tx]
[ty]
=='h')||
(str[x]
[y]==
'h'&& str[tx]
[ty]
=='o')||
(str[x]
[y]==
'o'&& str[tx]
[ty]
=='n')||
(str[x]
[y]==
'n'&& str[tx]
[ty]
=='g'))
return;}
intmain()
for(
int i =
0; i < n; i++
)return0;
}
P1101 單詞方陣
給一nxn的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著8個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間 color red 可以 color 交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8...
P1101 單詞方陣
給一 n times nn n 的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 ...
P1101 單詞方陣
題目描述 給一n n的字母方陣,內可能蘊含多個 yizhong 單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 88 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用 代替,以突出顯示單詞。例如 輸入 8 輸出 qyizho...