80pts求调(玄关)
查看原帖
80pts求调(玄关)
582006
markkkk_NBFLS楼主2025/1/7 22:42
#include<bits/stdc++.h>
using namespace std;
int t;
int n,m,k;
int x,y,d;
int a[1005][1005];
int b[1005][1005];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int main(){
	cin>>t;
	while(t--){
		memset(a,sizeof(a),0); 
		memset(b,sizeof(b),0);
		n=m=k=x=y=d=0;
		cin>>n>>m>>k;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				b[i][j]=0;
				char c;
				cin>>c;
				if(c=='.'){
					a[i][j]=1;
				} 
				else if(c=='x'){
					a[i][j]=0;
				} 
			}
		}
		int cnt=0;
		b[x][y]=1;
		for(int i=1;i<=k;i++){
			int nx=x+dx[d],ny=y+dy[d];
			if(a[nx][ny]==1){
				x=nx,y=ny;
				b[x][y]=1; 
			} 
			else{
				d=(d+1)%4;
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cnt+=b[i][j];
			}
		}
		cout<<cnt<<"\n";
	}
	return 0;
}

2025/1/7 22:42
加载中...