求助!
查看原帖
求助!
581315
KMemory楼主2024/10/31 21:29

样例左下角没有 提交RE

#include<bits/stdc++.h>
using namespace std;

char s[8]={'0','y','i','z','h','o','n','g'};
char a[1001][1001];
int n;
int dx[9]={0,0,0,1,1,1,-1,-1,-1};
int dy[9]={0,1,-1,0,-1,1,0,-1,1};
bool b[1001][1001];

bool dfs(int x,int y,int t,int d)
{
	if(t==8)
		return true;
	x+=dx[d];y+=dy[d];
	if(a[x][y]==s[t+1])
		dfs(x,y,t+1,d);
	else
		return false;
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(a[i][j]=='y')
				for(int k=1;k<=8;k++)
					if(dfs(i,j,1,k))
					{
						int x=i,y=j;
						b[x][y]=true;
						for(int p=1;p<=8;p++)
						{
							b[x+dx[k]][y+dy[k]]=true;
							x+=dx[k];y+=dy[k];
						}
					}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			if(b[i][j])
				cout<<a[i][j];
			else
				cout<<'*';
		cout<<endl;	
	}					
	return 0;						
}
2024/10/31 21:29
加载中...