洛谷 P1101 單詞方陣

2021-09-03 00:04:38 字數 2458 閱讀 5775

題目描述

給一nxn的字母方陣,內可能蘊含多個「yizhong」單詞。單詞在方陣中是沿著同一方向連續擺放的。擺放可沿著8個方向的任一方向,同一單詞擺放時不再改變方向,

單詞與單詞之間[color=red]可以[/color]交叉,因此有可能共用字母。輸出時,將不是單詞的字母用「*」代替,以突出顯示單詞。例如:

輸入: 輸出:

8qyizhong *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)。

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

輸出格式:

突出顯示單詞的nxn矩陣。
題解:

直接暴力。

用陣列a讀入,假設在某個點是「y」,那麼往八個方向擴充套件6個單位,如果可以擴充套件,則判斷在這個方向上的字元是否為「yizhong」,是則用陣列f記錄。

最後輸出,陣列f無記錄的輸出「*」,else輸出a[i][j]。

**:

有點醜啊!!!

#include 

#include

using

namespace

std;

int n,f[101][101],kf;

char a[101][101];

char st="yizhong";

int main()

if (kf) for (int k=0;k<=6;k++) f[i][j+k]=1;

if (i+6

<=n) kf=1; else kf=0;

if (i+6

<=n)

for (int k=1;k<=6;k++)

if (a[i+k][j]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i+k][j]=1;

if (j-6>=0) kf=1; else kf=0;

if (j-6>=0)

for (int k=1;k<=6;k++)

if (a[i][j-k]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i][j-k]=1;

if (i-6>0) kf=1; else kf=0;

if (i-6>0)

for (int k=1;k<=6;k++)

if (a[i-k][j]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i-k][j]=1;

if ((i-6>0)&&(j-6>=0)) kf=1; else kf=0;

if ((i-6>0)&&(j-6>=0))

for (int k=1;k<=6;k++)

if (a[i-k][j-k]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i-k][j-k]=1;

if ((i-6>0)&&(j+6

1; else kf=0;

if ((i-6>0)&&(j+6

for (int k=1;k<=6;k++)

if (a[i-k][j+k]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i-k][j+k]=1;

if ((i+6

<=n)&&(j-6>=0)) kf=1; else kf=0;

if ((i+6

<=n)&&(j-6>=0))

for (int k=1;k<=6;k++)

if (a[i+k][j-k]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i+k][j-k]=1;

if ((i+6

<=n)&&(j+6

1; else kf=0;

if ((i+6

<=n)&&(j+6

for (int k=1;k<=6;k++)

if (a[i+k][j+k]!=st[k])

if (kf) for (int k=0;k<=6;k++) f[i+k][j+k]=1;

}for (int i=1;i<=n;i++)

return

0;}

洛谷P1101單詞方陣

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

洛谷P1101 單詞方陣

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

洛谷 P1101 單詞方陣

p1101 單詞方陣 題解 使用染色的方法,一條路染下去,注意只往乙個方向染色 上 include include include using namespace std const string p yizhong int n 棋盤大小 增量陣列,八個方向 int x 8 int y 8 char...