RE求助
查看原帖
RE求助
1080809
liye123456楼主2024/10/27 20:21
#include <bits/stdc++.h>
using namespace std;
long long ans=0;
int f[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool q[1005][1005]={0},w[1005][1005]={0};
int dfs(int x,int y,int d,int s,int k,int n,int m){
	if(s==k){
		return s;
	}
	if(q[x+f[d][0]][y+f[d][1]]==0&&x+f[d][0]<=n&&y+f[d][1]<=m&&x+f[d][0]>=1&&y+f[d][1]>=1){
		w[x+f[d][0]][y+f[d][1]]=1;
		dfs(x+f[d][0],y+f[d][1],d,s+1,k,n,m);
	}
	else {
		dfs(x,y,(d+1)%4,s+1,k,n,m);
	}
}
int main(){
	int t;
	cin >> t;
	while(t--){
		int n,m,k,x,y,d;
		char c;
		cin >> n >> m >> k;
		cin >> x >> y >> d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin >> c;
				if(c=='.'){
					q[i][j]=0;
				}
				else {
					q[i][j]=1;
				}
			}
		}
		w[x][y]=1;
		dfs(x,y,d,0,k,n,m);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(w[i][j]==1){
					ans++;
					w[i][j]=0;
				}
			}
		}
		cout << ans << endl;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				q[i][j]=0;
			}
		}
		ans=0;
	}
	return 0;
}


2024/10/27 20:21
加载中...