40分,求调。
查看原帖
40分,求调。
1327982
YYYzy1311楼主2024/10/17 19:10
#include<bits/stdc++.h>
using namespace std;
char mp[105][105],o[7]="izhong";
bool vis[105][105],flog;
int dx[8]={1,0,1,-1,0,-1,1,-1},sum=0;
int dy[8]={0,1,1,0,-1,-1,-1,1},n,ex,ey;
void dis(int x,int y,int n1x,int n1y){
	if(mp[x][y]=='g'){
		return ;
	}
	int nx=n1x+x,ny=n1y+y;
	if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&mp[nx][ny]==o[sum]){
		sum++;
		vis[nx][ny]=1;
		dis(nx,ny,n1x,n1y);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(mp[i][j]=='y'){
				for(int k=0;k<8;k++){
					int nx=dx[k]+i,ny=dy[k]+j;
								if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&mp[nx][ny]==o[sum]){
						vis[i][j]=1;
						dis(i,j,dx[k],dy[k]);
						sum=0;	
					}
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(vis[i][j]==1){
				cout<<mp[i][j];
			}else{
				cout<<"*";
			}
		}
		cout<<endl;
	}
	return 0;
}
2024/10/17 19:10
加载中...