0分求助
查看原帖
0分求助
1098506
hq13034861770楼主2024/8/16 13:52
#include<bits/stdc++.h>
using namespace std;
int b[10][10]={{1,0},{0,1},{-1,0},{0,-1}},ans=INT_MAX,n,m,t,x1,yy1,x2,y2,a[10][10][110];
int v[1001][1001];
void dfs(int x,int y,int s,int h){
	//cout<<x<<" "<<y<<"\n";
	if(v[x][x]==3){ans=s;return;} 
	if(v[x][y]==4) h=6;
	if(v[x][y]==0||h<=1||s>=ans||s>=a[x][y][h]) return;
	a[x][y][h]=s;
	for(int i=0;i<4;i++){
		int nx=x+b[i][0];
		int ny=y+b[i][1];
		dfs(nx,ny,s+1,h-1);
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>v[i][j];
			if(v[i][j]==2) x1=i,yy1=j;
		}
	}
//	if(v[x2][y2]){
//		cout<<"0";
//		return 0;
//	}
	memset(a,63,sizeof(a));
	dfs(x1,yy1,0,6);
	cout<<ans;
	return 0;
} 
2024/8/16 13:52
加载中...