0pts求条qwq
查看原帖
0pts求条qwq
1341511
fyx15608404850楼主2025/1/21 15:38
#include<bits/stdc++.h>
using namespace std;
int n;
char a[102][102],g[102][102];
bool f[102][102];
int fx[]={0,1,1,1,0,0,-1,-1,-1};
int fy[]={0,1,0,-1,1,-1,1,0,-1};
string e="yizhong";
struct Node{
	int xx,yy;
}r[102];
bool yizhong(int x,int y,char k){
	char p;
	if(k=='g'){
		for(int i=1;i<=8;i++){
			if(a[x+fx[i]][y+fy[i]]=='n'){
				return 1;
			}
		}
		return 0;
	}else{
		for(int i=0;i<e.size()-1;i++){
			if(e[i]==k){
				p=e[i+1];
				break;
			}
		}
		for(int i=1;i<=8;i++){
			if(a[x+fx[i]][y+fy[i]]==p){
				return 1;
			}
		}
		return 0;
	}
	
}
void dfs(int x,int y,string s,Node k[],int p){
	if(s==e){
		for(int i=1;i<=p;i++){
			f[k[i].xx][k[i].yy]=1;
		}
		memset(k,0,sizeof(k));
		return;
	}
	for(int i=0;i<s.size();i++){
		if(s[i]!=e[i]){
			cout<<s<<"  "<<x<<" "<<y<<endl;
			return;
		}
	}
	for(int i=1;i<=8;i++){
		int tx=x+fy[i];
		int ty=y+fy[i];
		if(tx>=1&&tx<=n&&ty>=1&&ty<=n&&g[tx][ty]!='*'){
			k[p].xx=tx;
			k[p].yy=ty;
			dfs(tx,ty,s+g[tx][ty],k,p+1);
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
			if(a[i][j]!='y'&&a[i][j]!='i'&&a[i][j]!='z'&&a[i][j]!='h'&&a[i][j]!='o'&&a[i][j]!='n'&&a[i][j]!='g'){
				g[i][j]='*';
			}else{
				g[i][j]=a[i][j];
			}
		} 
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(g[i][j]!='*'){
				if(!yizhong(i,j,g[i][j])){
					g[i][j]='*';
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(g[i][j]=='y'){
				dfs(i,j,"",r,1);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(f[i][j]!=1){
				g[i][j]='*';
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<g[i][j];
		}
		cout<<endl;
	}
	return 0;
}
2025/1/21 15:38
加载中...