題目描述
給一n×n的字母方陣,內可能蘊含多個「yizhong」單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著 8 個方向的任一方向,同一單詞擺放時不再改變方向,單詞與單詞之間可以交叉,因此有可能共用字母。輸出時,將不是單詞的字母用*代替,以突出顯示單詞。例如:
輸入格式
第一行輸入乙個數n。(7≤n≤100)。
第二行開始輸入n×n的字母矩陣。
輸出格式
突出顯示單詞的n×n矩陣
7aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
*******
*******
*******
*******
*******
*******
*******
8qyizhong
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...