样例过了但是全WA
查看原帖
样例过了但是全WA
957060
2948195852D楼主2023/7/13 19:42

怀疑是linux和window上的换行符不一样,请问该怎么改呢

#include <stdio.h>
char map[110][110];
int mark[110][110];
struct Que
{
	int x;
	int y;
}que[11];
char s[10]={"yizhong"};
int n;
void dfs(int x,int y,int idx,int toward)
{
	if(idx==7)
	{
	//	printf("?");
		for(int i=0;i<7;i++)
		{
			mark[que[i].x][que[i].y]=1;
			que[i].x=0;
			que[i].y=0;
		}
		return;
	}
	int nx=x;
	int ny=y;
	if(toward==0)
	{
		ny++;
	}
	else if(toward==1)
	{
		nx++;
	}
	else if(toward==2)
	{
		nx++;
		ny++;
	}
	else if(toward==3)
	{
		nx--;
	}
	else if(toward==4)
	{
		ny--;
	}
	else if(toward==5)
	{
		ny--;
		nx--;
	}
	else if(toward==6)
	{
		ny--;
		nx++;
	}
	else if(toward==7)
	{
		ny++;
		nx--;
	}
	if(nx>=0&&nx<n&&ny>=0&&ny<n&&map[nx][ny]==s[idx])
	{
	//	printf("%d %d %d\n",nx,ny,idx);
		que[idx].x=nx;
		que[idx].y=ny;
		dfs(nx,ny,idx+1,toward);
		que[idx].x=0;
		que[idx].y=0;
	}
}
int main()
{
	scanf("%d",&n);
	getchar();
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			scanf("%c",&map[i][j]);
		}
		getchar();
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(map[i][j]=='y')
			{
			//	printf("start:%d %d %c\n",i,j,map[i][j]);
				que[0].x=i;
				que[0].y=j;
				for(int k=0;k<8;k++)
				{
					dfs(i,j,1,k);
				}
				/*for(int i=0;i<n;i++)
				{
					for(int j=0;j<n;j++)
					{
						printf("%d",mark[i][j]);
					}
					printf("\n");
				}*/
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(mark[i][j])
			{
				printf("%c",map[i][j]);
			}
			else
			{
				printf("*");
			}
		}
		printf("\n");
	}
	
	return 0;
}
2023/7/13 19:42
加载中...