是数据问题吗我用cin得了满分,建议加强数据
查看原帖
是数据问题吗我用cin得了满分,建议加强数据
858244
wenchenyu楼主2024/10/26 21:20
#include<iostream>
#include<cstdio>

using namespace std;
int t;
char c[1010][1010];
bool vis[1010][1010];
void dfs(int n,int m,int k,int x,int y,int d){
	vis[x][y]=1;
	if(k==0) return;
	else if(d==0&&c[x][y+1]!='x'&&y+1<=m) dfs(n,m,k-1,x,y+1,d);
	else if(d==1&&c[x+1][y]!='x'&&x+1<=n) dfs(n,m,k-1,x+1,y,d);
	else if(d==2&&c[x][y-1]!='x'&&y-1>=1) dfs(n,m,k-1,x,y-1,d);
	else if(d==3&&c[x-1][y]!='x'&&x-1>=1) dfs(n,m,k-1,x-1,y,d);
	else dfs(n,m,k-1,x,y,(d+1)%4);
}
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		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++) vis[i][j]=0;
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++) cin>>c[i][j];
		}
		dfs(n,m,k,x,y,d);
		int ans=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(vis[i][j]==1) ans++;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}
2024/10/26 21:20
加载中...