社区讨论

赛时代码爆零为啥?

P11228[CSP-J 2024] 地图探险参与者 6已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@m2pvlsfd
此快照首次捕获于
2024/10/26 16:05
去年
此快照最后确认于
2025/11/04 16:04
4 个月前
查看原帖
C
#include<bits/stdc++.h>
#define int long long
using namespace std;
char a[1010][1010];
bool used[1010][1010];
int t,n,m,x1,g1,k1,d1,maxx=1;
void dfs(int x,int y,int d,int k,int s){
	if(x<1||x>n||y<1||y>m||a[x][y]=='x') return;
	if(s>maxx) maxx=s;
	if(k==k1){
		if(used[x][y]==0){
			if(s+1>maxx) maxx=s+1;
		}
		return;
	}
	if(used[x][y]==0){
		used[x][y]=true;
		if(d==0) dfs(x,y+1,d,k+1,s+1);
		if(d==1) dfs(x+1,y,d,k+1,s+1);
		if(d==2) dfs(x,y-1,d,k+1,s+1);
		if(d==3) dfs(x-1,y,d,k+1,s+1);
	}
	else if(used[x][y]==1){
		if(d==0) dfs(x,y+1,d,k+1,s);
		if(d==1) dfs(x+1,y,d,k+1,s);
		if(d==2) dfs(x,y-1,d,k+1,s);
		if(d==3) dfs(x-1,y,d,k+1,s);
	}
	dfs(x,y,(d+1)%4,k+1,s);
	used[x][y]=false;
}
signed main(){
    cin>>t;
    while(t--){
    	cin>>n>>m>>k1;
    	cin>>x1>>g1>>d1;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++)
    			cin>>a[i][j];
		}
    	dfs(x1,g1,d1,0,1);
    	cout<<maxx<<endl;
    	maxx=1;
	}
    return 0;
}

回复

7 条回复,欢迎继续交流。

正在加载回复...