P1101 單詞方陣

2021-08-20 08:07:53 字數 2095 閱讀 1346

題目鏈結

題目描述

給一 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:

7

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

輸出樣例#1:

*******

*******

*******

*******

*******

*******

*******

解題思路:

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...