求助
  • 板块P1101 单词方阵
  • 楼主czk111
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/1 21:48
  • 上次更新2023/11/3 06:27:23
查看原帖
求助
682044
czk111楼主2023/8/1 21:48
#include <bits/stdc++.h>
using namespace std;
int n;char a[1100][1100];bool vis[1100][1100];string b="yizhong";
int dx[10]={1,0,1,-1,0,-1,1,-1};
int dy[10]={0,1,1,0,-1,-1,-1,1};
queue <pair<int,int> > q;
void dfs(int x,int y,int t){
	if(t>=7){
		while(true){
			int n=q.front().first;int m=q.front().second;
			q.pop();
			if(n==-1)break;
			vis[n][m]=true;
		}
		return;
	}
	for(int i=0;i<9;i++){
		int tx=x+dx[i];int ty=y+dy[i];
		if(a[tx][ty]==b[t+1]){
			q.push(make_pair(x,y));
			dfs(tx,ty,t+1);
		}
	}
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a[i][j]; 
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(a[i][j]==b[0]){
				q.push(make_pair(-1,-1));
				dfs(i,j,0);
			}
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(!vis[i][j]) cout<<"*";
			else cout<<a[i][j];
		}
		cout<<endl;
	}
}
2023/8/1 21:48
加载中...