萌新。。刚学oi。。搜索怎么写,求(60分,第三个wa,最后一个re)
  • 板块P1101 单词方阵
  • 楼主wway
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/10/14 23:32
  • 上次更新2023/10/27 07:30:54
查看原帖
萌新。。刚学oi。。搜索怎么写,求(60分,第三个wa,最后一个re)
602960
wway楼主2022/10/14 23:32
#include<bits/stdc++.h>
int ax,ay,n,stt=1;
char s;
bool b[110][110];
char c[110][110];
int a[7]={'y','i','z','h','o','n','g'};
int dx[9]={0,0,-1,1,1,-1,1,-1};
int dy[9]={-1,1,0,0,-1,1,1,-1};
struct node{
	int m,n;
}st[30];
int  dfs(int x,int y,int way,int num)
{
	if(c[x][y]==a[num] && a[num]=='g')
	return 1;
	else if(c[x][y]==a[num])
	return (dfs(x+dx[way],y+dy[way],way,num+1));
	else 
	return 2;
}
int main() 
{
	std::cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			std::cin>>s;
			c[i][j]=s;	
			if(s=='y')
			{
				st[stt].m=i;
				st[stt].n=j;
				stt++;
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<=7;j++)
		{
			ax=st[i].m+dx[j];
			ay=st[i].n+dy[j];
			if(ax>=1 && ay>=1 && ax<=n &&ay<=n)
			{
				if(dfs(ax,ay,j,1)==1)
				{
					b[st[i].m][st[i].n]=1;
					b[ax][ay]=1;
					for(int k=1;k<=5;k++)
					{
						ax+=dx[j];
						ay+=dy[j];
						b[ax][ay]=1;
					}
				}
			}	
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(b[i][j]==1)
				std::cout<<c[i][j];
			else 
				std::cout<<"*";
		}
		std::cout<<"\n";
	}
	return 0;
}
2022/10/14 23:32
加载中...