悬关
查看原帖
悬关
1043311
qj10楼主2024/11/19 18:04
#include<iostream>
using namespace std;
int t,n,m,k,x,y,d;
char s[1005][1005];
bool vis[1005][1005];
int ex(){
	int cnt = 1;
	vis[x][y] = 1;
	for(int i=1;i<=k;i++){
		if(d==0){
			if(s[x][y+1]=='x'|| x<1 || y+1<1 || x>n || y+1>m){
				d = (d%4)+1;
				continue;
			}else{
				y++;
				if(vis[x][y]==0) cnt++,vis[x][y]=1;
				else y--;
			}
		}else if(d==1){
			if(s[x+1][y]=='x'|| x+1<1 || y<1 || x+1>n || y>m){
				d = (d%4)+1;
				continue;
			}else{
				x++;
				if(vis[x][y]==0) cnt++,vis[x][y]=1;
				else x--;
			}
		}else if(d==2){
			if(s[x][y-1]=='x'|| x<1 || y-1<1 || x>n || y-1>m){
				d = (d%4)+1;
				continue;
			}else{
				y--;
				if(vis[x][y]==0) cnt++,vis[x][y]=1;
				else y++;
			}
		}else{
			if(s[x-1][y]=='x'|| x-1<1 || y<1 || x-1>n || y>m){
				d = 0;
				continue;
			}else{
				x--;
				if(vis[x][y]==0) cnt++,vis[x][y]=1;
				else x++;
			}
		}	
	}
	return cnt;
}
int main(){
	cin>>t;
	while(t--){
		cin>>n>>m>>k;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>s[i][j];
				vis[i][j] = 0;
			}
		}
		cout<<ex()<<endl;
	}
	return 0;
}
2024/11/19 18:04
加载中...