dalao帮忙康康,不知道为什么卡(好像是递归无边界)
  • 板块P2802 回家
  • 楼主luqyou
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/2/7 20:14
  • 上次更新2023/10/28 09:29:00
查看原帖
dalao帮忙康康,不知道为什么卡(好像是递归无边界)
464732
luqyou楼主2022/2/7 20:14
#include<bits/stdc++.h>
using namespace std;
//queue<int> x,y;
int sx,sy,ex,ey;
int n,m,a[11][11],hp,ans=999999,now;
int dx[4]={0,-1,0,1};
int dy[4]={1,0,-1,0};
void dfs(int x,int y){
	if(now>=ans) return ;
	if(x==ex&&y==ey){
		ans=now;
		return ;
	}
	if(hp==1){
		if(a[x+1][y]!=4&&a[x-1][y]!=4&&a[x][y+1]!=4&&a[x][y-1]!=4){
			return ;
		}
	}
	for(int i=0;i<=3;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		now++;
		hp--;
		if(a[nx][ny]=4) hp=6;
		if(a[nx][ny]!=0&&(!(nx<1||nx>n||ny<1||ny>m))){
			dfs(nx,ny);
		}
		now--;
		if(a[nx][ny]!=4) hp++;
	}
}
int main()
{
	hp=6;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]==2) sx=i,sy=j;
			if(a[i][j]==3) ex=i,ey=j;
		}
	}
	dfs(sx,sy);
	cout<<ans;
	return 0;
}
2022/2/7 20:14
加载中...