大佬们求助!!!
查看原帖
大佬们求助!!!
1512777
zzy1207楼主2025/1/15 21:17

为什么ans++还是1,,,

#include<bits/stdc++.h>
using namespace std;
int ma[200][200];
char a;
int n,m,k,T,x,y,d0,ans;
void dfs(int a,int b,int d){
	int x0,y0;
	if(d%4==0&&k>0){
		x0=a;
		y0=b+1;
	}//向东 
	if(d%4==1&&k>0){
		x0=a+1;
		y0=b;
	}//向南 
	if(d%4==2&&k>0){
		x0=a;
		y0=b-1;
	}//向西 
	if(d%4==3&&k>0){
		x0=a-1;
		y0=b;
	}//向北 
	
	if(x0>0&&x0<=n&&y0>0&&y0<=m&&ma[x0][y0]&&k){
		ans++;
		k--;
		dfs(x0,y0,d);
	}
	else if(ma[x0][y0]=='*'||x0<0||x0>n||y0<0||y0>m){
		d++;
		k--;
		dfs(a,b,d);
	}
}
int main(){
    cin>>T;
    for(int z=0;z<T;z++){
		ans=1;
		cin>>n>>m;
		cin>>x>>y>>d0;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a;
				if(a=='.')
					ma[i][j]=1;
				else if(a=='*'){
					ma[i][j]=0;
				}
			}
		} 
		for(int i=1;i<n;i++){
			for(int j=1;j<=m;j++){
				dfs(i,j,d0);
			}
		}
		cout<<ans<<endl;
	}
    	return 0;
}
2025/1/15 21:17
加载中...