【求助】考场上样例全过,在家打出错了,大体是这样,dfs有问题
查看原帖
【求助】考场上样例全过,在家打出错了,大体是这样,dfs有问题
1022556
D75_RangerL楼主2024/10/26 18:05

考场上样例全过,在家打出错了,大体是这样,dfs有问题,没超

#include<bits/stdc++.h>
using namespace std;
int n,m,k,t;
char a[1005][1005];
int fx[5]={0,1,0,-1};
int fy[5]={1,0,-1,0};
void dfs(int x,int y,int d,int p,int tu){
	a[x][y]='@';
	if(p==k||tu==4){
		return ;
	}
	int tx=x+fx[d];
	int ty=y+fy[d];
	if(a[tx][ty]=='.') dfs(tx,ty,d,p+1,0);
	else if(a[tx][ty]=='@')	dfs(tx,ty,d,p+1,0);
	else dfs(x,y,(d+1)%4,p,tu+1);
}
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>n>>m>>k;
		int x,y,d;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		dfs(x,y,d,0,0);
		int sum=0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(a[i][j]=='@'){
					sum++; 
				}
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}

2024/10/26 18:05
加载中...