80pts求调玄关
查看原帖
80pts求调玄关
943493
LookatSea楼主2024/11/12 21:38
#include<bits/stdc++.h>
using namespace std;
char g[1005][1005];
bool flag[1005][1005];
int po;
int main(){
	int T;
	cin>>T;
	while(T--){
		int n,m,k,x,y,d;
		cin>>n>>m>>k>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>g[i][j];
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				flag[i][j]=0;
			}
		}
		flag[x][y]=1;
		while(k--){
			if(d==0){
				if(g[x][y+1]!='.'){
					d=(d+1)%4;
//					cout<<"d:"<<d<<'\n';
				}else{
					y+=1;
					flag[x][y]=1;
//					cout<<"x:"<<x<<'\n'<<"y:"<<y<<'\n';
				}	
			}else if(d==1){
				if(g[x+1][y]!='.'){
					d=(d+1)%4;
//					cout<<"d:"<<d<<'\n';					
				}
				else{
					x+=1;
					flag[x][y]=1;
//					cout<<"x:"<<x<<'\n'<<"y:"<<y<<'\n';
				}
			}else if(d==2){
				if(g[x][y-1]!='.'){
					d=(d+1)%4;
//					cout<<"d:"<<d<<'\n';					
				}else{
					y-=1;
					flag[x][y]=1;
//					cout<<"x:"<<x<<'\n'<<"y:"<<y<<'\n';
				}
			}else if(d==3){
				if(g[x-1][y]!='.'){
					d=(d+1)%4;
//					cout<<"d:"<<d<<'\n';
				}
				else{
					x-=1;
					flag[x][y]=1;
//					cout<<"x:"<<x<<'\n'<<"y:"<<y<<'\n';
				}
			}
		}
		int po=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(flag[i][j]==1){
					po++; 
				}
			}
		}
		cout<<po<<'\n';
	}
	return 0;
}
2024/11/12 21:38
加载中...