求助
查看原帖
求助
682044
czk111楼主2023/1/15 20:02
#include <bits/stdc++.h>
using namespace std;
int a[110][110],n,m,ans=-1;
void dfs(int x,int y,bool z,int w,int c){
	if(x<=0||x>m||y<=0||x>m||!a[x][y]&&z==true||c>=ans&&ans!=-1)return;
	if(w!=a[x][y]) c++;
	if(!a[x][y]){c+=2;z=true;}
	if(a[x][y]&&z==true) z=false;
	dfs(x+1,y,z,a[x][y],c);
	dfs(x-1,y,z,a[x][y],c);
	dfs(x,y+1,z,a[x][y],c);
	dfs(x,y-1,z,a[x][y],c);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int e,b,c;
		cin>>e>>b>>c;
		a[e][b]=c+1;
	}
	dfs(1,1,false,a[1][1],0);
	cout<<ans;
}

之前求助过一次,发现代码太复杂,就改了一下,但现在好像死循环了

2023/1/15 20:02
加载中...