纯模拟,50pts,求调
查看原帖
纯模拟,50pts,求调
909190
Wangzijia2011楼主2024/10/26 19:51
#include<bits/stdc++.h>
using namespace std;
char ditu[1009][1009];
char ditu2[1009][1009];
int main(){
	int t;
	cin>>t;
	for(int i=1;i<=t;i++){
		int n,m,k,ans=1;
		cin>>n>>m>>k;
		int x0,y0,d0;
		cin>>x0>>y0>>d0;
		memset(ditu,'0',sizeof ditu);
		memset(ditu2,'0',sizeof ditu2);
		for(int j=1;j<=n;j++)
			for(int kk=1;kk<=m;kk++) cin>>ditu[j][kk];
		for(int j=1;j<=n;j++)
			for(int kk=1;kk<=m;kk++) ditu2[j][kk]=ditu[j][kk];
		while(k){
			if(d0==0){
				if(ditu[x0][y0+1]!='.'||
				ditu[x0][y0+1]=='0') d0=(d0+1)%4;
				else{
					y0+=1;
					ditu2[x0][y0]='1';
				}
			}
			else if(d0==1){
				if(ditu[x0+1][y0]!='.'||
				ditu[x0+1][y0]=='0') d0=(d0+1)%4;
				else{
					x0+=1;
					ditu2[x0][y0]='1';
				}
			}
			else if(d0==2){
				if(ditu[x0][y0-1]!='.'||
				ditu[x0][y0-1]=='0') d0=(d0+1)%4;
				else{
					y0-=1;
					ditu2[x0][y0]='1';
				}
			}
			else{
				if(ditu[x0-1][y0]!='.'||
				ditu[x0-1][y0]=='0') d0=(d0+1)%4;
				else{
					x0-=1;
					ditu2[x0][y0]='1';
				}
			}
			k-=1;
		}
		for(int u=1;u<=n;u++)
			for(int v=1;v<=m;v++)
				if(ditu2[u][v]=='1') ans++;
//		cout<<x0<<" "<<y0<<" "<<k<<endl;
		cout<<ans<<endl;
	}
	return 0;
}
2024/10/26 19:51
加载中...