洛谷 P1101 單詞方陣

2021-10-06 23:11:45 字數 1443 閱讀 5103

題目描述

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

輸入格式

第一行輸入乙個數n。(7≤n≤100)。

第二行開始輸入n×n的字母矩陣。

輸出格式

突出顯示單詞的n×n矩陣

7

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

*******

*******

*******

*******

*******

*******

*******

8

qyizhong

gydthkjy

nwidghji

orbzsfgz

hhgrhwth

zzzzzozo

iwdfrgng

yyyygggg

*yizhong

gy******

n*i*****

o**z****

h***h***

z****o**

i*****n*

y******g

題目分析

該題中對於字串的起點y在矩陣中一共可以有8個方向可構成字串,因此在逐個判斷字元的過程中,我們並不需對方向進行改變,因為字串是沿直線存放的。故而我們只需要在字元為y的點迴圈8個方向,既是8個方向上的直線上的字元與目標字串的字元進行對比即可。

#include

#include

using

namespace std;

const

int n=

110;

char a[n]

[n],str=

;bool b[n]

[n];

int n,m;

int dx=

;int dy=

;void

dfs(

int x,

int y)

if(choose==0)

continue

;for

(int j=

0;j<=

6;j++)}

}int

main()

for(

int i=

1;i<=n;i++

) cout<}return0;

}

洛谷P1101單詞方陣

整體的思路 在矩陣中找到 y 然後對 y 進行八個方向的搜尋 用cmp陣列存 yizhong 在每乙個方向中和cmp進行比較,若存在任意乙個不同,則處理下乙個方向。include includeusing namespace std const int dx 方向陣列 const int dy co...

洛谷 P1101 單詞方陣

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

洛谷P1101 單詞方陣

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