建议加强数据
查看原帖
建议加强数据
944510
willAK楼主2024/10/27 19:29

这是我代码,样例5没过,但洛谷AC了,怎么办?

#include<bits/stdc++.h>
using namespace std;
int a[2010][2010];
bool b[2010][2010];
int n,m,k,x,y,d;
void dfs(int x,int y,int s,int d)
{
	b[x][y]=1;
	if(s==k)
	{
		return ;
	}
	if(d==0)
	{
		if(a[x][y+1]==1 && x>=1 && x<=n && y+1>=1 && y+1<=m)
		{
			dfs(x,y+1,s+1,d);
		}
		else dfs(x,y,s+1,(d+1)%4);
	}
	else if(d==1)
	{
		if(a[x+1][y]==1 && x+1>=1 && x+1<=n && y>=1 && y<=m)
		{
			dfs(x+1,y,s+1,d);
		}
		else dfs(x,y,s+1,(d+1)%4);
	}
	else if(d==2)
	{
		if(a[x][y-1]==1 && x>=1 && x<=n && y-1>=1 && y-1<=m)
		{
			dfs(x,y-1,s+1,d);
		}
		else dfs(x,y,s+1,(d+1)%4);
	}
	else if(d==3)
	{
		if(a[x-1][y]==1 && x-1>=1 && x-1<=n && y>=1 && y<=m)
		{
			dfs(x-1,y,s+1,d);
		}
		else dfs(x,y,s+1,(d+1)%4);
	}
	return ;
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d%d%d%d%d",&n,&m,&k,&x,&y,&d);
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				a[i][j]=0;
				b[i][j]=0;
			}
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				char s;
				cin>>s;
				if(s=='.')
				{
					a[i][j]=1;
				}
				else
				{
					a[i][j]=0;
				}
			}
		}
		dfs(x,y,0,d);
		int ans=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if(b[i][j]==1)
				{
					ans++;
				}
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}
2024/10/27 19:29
加载中...