0分,全是WA,但是样例没有问题,不信可试一下,求大佬改一下
查看原帖
0分,全是WA,但是样例没有问题,不信可试一下,求大佬改一下
1816596
Ljf650楼主2025/8/3 23:04

0分,全是WA,但是样例没有问题,不信可试一下,求大佬改一下

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int t;
	cin>>t;
	int const tmpt=t;
	int ans[tmpt];
	for(int num=1;num<=t;num++)
	{
		int n,m,k;
		cin>>n>>m>>k;
		int const tmpn=n,tmpm=m;
		char s[tmpn*tmpm+1];
		char st[tmpn*tmpm+1];
		int x,y,d;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cin>>s[m*(i-1)+j-1];
				st[m*(i-1)+j-1]='0';
			}
		}
		st[m*(x-1)+y-1]='1';
		int cnt=1;
		for(int i=1;i<k;i++)
		{
			switch(d)
			{
				case 0:
					if(y+1<=m&&s[m*(x-1)+y]=='.')
					{
						y++;
						if(st[m*(x-1)+y-1]='0')
						{
							st[m*(x-1)+y-1]='1';
							cnt++;
						}
						break;
					}
					else
					{
						d++;
						break;
					}
				case 1:
					if(x+1<=n&&s[m*x+y-1]=='.')
					{
						x++;
						if(st[m*(x-1)+y-1]=='0')
						{
							st[m*(x-1)+y-1]='1';
							cnt++;
						}
						break;
					}
					else
					{
						d++;
						break;
					}
				case 2:
					if(y-1>=1&&s[m*(x-1)+y-2]=='.')
					{
						y--;
						if(st[m*(x-1)+y-1]=='0')
						{
							st[m*(x-1)+y-1]='1';
							cnt++;
						}
						break;
					}
					else
					{
						d++;
						break;
					}
				case 3:
					if(x-1>=1&&s[m*(x-2)+y-1]=='.')
					{
						x--;
						if(st[m*(x-1)+y-1]=='0')
						{
							st[m*(x-1)+y-1]='1';
							cnt++;
						}
						break;
					}
					else
					{
						d=0; 
						i--;
						break;
					}
			}
		}
		ans[num-1]=cnt;
	}
	for(int i=0;i<t;i++)
	{
		cout<<ans[i]<<endl;
	}
	return 0;
}
2025/8/3 23:04
加载中...