#include<bits/stdc++.h>
using namespace std;
int n;
const int Maxn =108;
char arr[Maxn][Maxn];
bool vis[Maxn][Maxn];//标记
int xx[]= {1,1,1,0,0,-1,-1,-1};//方向
int yy[]= {1,0,-1,1,-1,1,0,-1};
string sz="yizhong";
int dfs(int x,int y) {
for(int i=0; i<8; i++) {
int flag=1;
for(int j=0; j<7; j++) {
int dx=x+j*xx[i];
int dy=y+j*yy[i];//移动
if(dx<1||dx>n||dy<1||dy>n||sz[j]!=arr[dx][dy]) {//判断条件
flag=0;
break;
}
}
if(flag) {
for(int j=0; j<7; j++) {//符合开始搜
int dx=x+j*xx[i];
int dy=y+j*yy[i];
vis[dx][dy]=1;
}
}
}
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>arr[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(arr[i][j]=='y') {//找开头
dfs(i,j);
}
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(!vis[i][j]) {
cout<<"*";
} else {
cout<<arr[i][j];
}
}
cout<<endl;
}
return 0;
}
P1101 单词方阵
最新推荐文章于 2024-05-10 19:33:14 发布