50pts求调
查看原帖
50pts求调
1185928
liuhanbin313楼主2024/10/28 17:48
#include<bits/stdc++.h>
using namespace std;
int main()
{
	freopen("explore3.in","r",stdin);
	freopen("explore3.out","w",stdout);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int a,b,c,d,e,f,sum=0;
		cin>>a>>b>>c>>d>>e>>f;
		char map[a+1][b+1];
		int g[a+1][b+1]={0},h[a+1][b+1]={0};
		for(int j=1;j<=a;j++)
		{
			for(int k=1;k<=b;k++)
			{
				cin>>map[j][k];
				if(map[j][k]=='.')
				{
					g[j][k]=1;
				}
			}
		}
		int rx,ry,r;
		rx=d;
		ry=e;
		r=f;
		for(int l=1;l<=c;l++)
		{
			int rrx=rx,rry=ry;
			if(r==0)
			{
				ry+=1;
			}
			if(r==1)
			{
				rx+=1;
			}
			if(r==2)
			{
				ry-=1;
			}
			if(r==3)
			{
				rx-=1;
			}
			if(rx<1 or ry<1 or rx>a or ry>b or g[rx][ry]==0)
			{
				rx=rrx;
				ry=rry;
				r=(r+1)%4;
				continue;
			}
			else
			{
				if(h[rx][ry]==0)
				{
					h[rx][ry]=1;
					sum++;
				}
			}
		}
	cout<<sum+1<<endl;	
	}
}
2024/10/28 17:48
加载中...