0分,求调样例没有问题,可以试一下,但全是WA
查看原帖
0分,求调样例没有问题,可以试一下,但全是WA
1816596
Ljf650楼主2025/8/3 22:58

样例没有问题,可以试一下,但全是WA,求大佬改一下

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int n,m,k;
	cin>>n>>m>>k;
	char s[n*m+1];
	char st[n*m+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=0;
	for(int i=0;i<k;i++)
	{
		switch(d)
		{
			case 0:
				if(y+1<=n&&s[m*(x-1)+y]=='.')
				{
					y++;
					if(st[m*(x-1)+y]==0)
					{
						st[m*(x-1)+y]=1;
						cnt++;
					}
					break;
				}
				else
				{
					d=(d+1)%4;
				}
			case 1:
				if(x+1<=m&&s[m*x+y-1])
				{
					x++;
					if(st[m*x+y-1]==0)
					{
						st[m*x+y-1]=1;
						cnt++;
					}
					break;
				}
				else
				{
					d=(d+1)%4;
				}
			case 2:
				if(y-1>=1&&s[m*(x-1)+y-2])
				{
					y--;
					if(st[m*(x-1)+y-2]==0)
					{
						st[m*(x-1)+y-2]=1;
						cnt++;
					}
					break;
				}
				else
				{
					d=(d+1)%4;
				}
			case 3:
				if(x-1>=1&&s[m*(x-2)+y-1])
				{
					x--;
					if(st[m*(x-2)+y-1]==0)
					{
						st[m*(x-2)+y-1]=1;
						cnt++;
					}
					break;
				}
				else
				{
					d=(d+1)%4;
				}
				k--;
		}
	}
	cout<<cnt;
	return 0;
}
2025/8/3 22:58
加载中...