Orz求助
查看原帖
Orz求助
662362
zlsky168楼主2024/7/9 20:41
#include<iostream>
using namespace std;
int n;
char ar[157][157],answer[157][157];
char b[10]={'6','y','i','z','h','o','n','g'};
//int xp[10]={0,1,-1,0,0,1,-1,1,-1};
//int yp[10]={0,0,0,1,-1,1,-1,-1,1};
bool dfs(int x,int y,int i,int j,int cnt){//载入:“i”的位置,方向,目前次数 
//	cout<<"x="<<x<<"y="<<y<<"="<<ar[x][y]<<endl;
//	cout<<"x="<<x+i<<"y="<<y+j<<"="<<ar[x+i][y+j]<<endl;
//	cout<<"  "<<"模板="<<b[cnt]<<"遍历次数="<<cnt<<endl;
	if(cnt==8){
//		cout<<"Yes!!!!!!!!!!!!!!!!\n";
		return true;
	}
	if(x<0||y<0||x>n||y>n||ar[x][y]!=b[cnt])return false;
	if(dfs(x+i,y+j,i,j,++cnt)){
		answer[x][y]=ar[x][y];
//		cout<<answer[x][y]<<endl;
		return true;
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){//输入
		for(int j=1;j<=n;j++){
			cin>>ar[i][j];
			answer[i][j]='*';//全部初始化,之后覆盖
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(ar[i][j]=='y'){
				for(int x=-1;x<=1;x++){
					for(int y=-1;y<=1;y++){
						if(ar[i+x][j+y]=='i'){
							if(dfs(i+x,j+y,x,y,2)){
								answer[i][j]='y';
								answer[i+x][y+j]='i';
							}
						}
					}
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<answer[i][j];
		}cout<<endl;
	}
	return 0;
}
2024/7/9 20:41
加载中...