模拟求调
查看原帖
模拟求调
1176087
XQ0014楼主2024/10/28 21:54

用模拟的思路,但不知道问题是什么


#include<bits/stdc++.h>
using namespace std;
int mg[1009][1009];
int main(){
	int t; 
	cin>>t;
	for(int cs=1;cs<=t;cs++)
	{
		int x,y,d,m,n,k,ans=0;
		cin>>n>>m>>k>>x>>y>>d;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
			{
				char a;
				cin>>a;
				if(a=='.') mg[i][j]=1;
				else mg[i][j]=0;
			}
		for(int i=1;i<=k;)
		{
			if(d==0){
				i++,mg[x][y]=2;
				if(mg[x][y+1]!=0) y++;
				else d=(d+1)%4;
			}
			if(d==1){
				i++,mg[x][y]=2;
				if(mg[x+1][y]!=0) x++;
				else d=(d+1)%4;
			}
			if(d==2){
				i++,mg[x][y]=2;
				if(mg[x][y-1]!=0) y--;
				else d=(d+1)%4;
			}
			if(d==3){
				i++,mg[x][y]=2;
				if(mg[x-1][y]!=0) x--;
				else d=(d+1)%4;
			}
		}
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
			{
				if(mg[i][j]==2) ans++;
				mg[i][j]=0;
			} 
		cout<<ans<<endl;
	}	
	return 0;
}
2024/10/28 21:54
加载中...