DFS #8 #9 #11 WA 72分 蒟蒻求助T^T
  • 板块P2802 回家
  • 楼主CQU5S
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/12/13 17:11
  • 上次更新2023/11/5 06:10:09
查看原帖
DFS #8 #9 #11 WA 72分 蒟蒻求助T^T
346241
CQU5S楼主2020/12/13 17:11
#include<iostream>
#include<cmath>
using namespace std;
int map[10][10],vis[10][10];
int nex[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
int n,m;
int sx,sy,nx,ny;
int hp=6,step=0;
long long minn=20002000;
int flag=0;
int DFS(int x,int y){
	if(step<minn){
		if(map[x][y]==4){
			hp=6;
		}
		if(map[x][y]==3){
			flag=1;
			if(step<minn){
				minn=step;
				step=0;
			}
		}
		vis[x][y]=1;
		for(int i=0;i<4;i++){
			nx=x+nex[i][0];
			ny=y+nex[i][1];
			if(nx>=0&&ny>=0&&nx<n&&ny<m&&map[nx][ny]&&!vis[nx][ny]){
				step++;
				hp--;
				if(hp!=0){
					DFS(nx,ny);
				}
				step--;
				hp++;
				vis[nx][ny]=0;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>map[i][j];
			if(map[i][j]==2){
				sx=i;
				sy=j;
			}
		}
	}
	DFS(sx,sy);
	if(flag){
		cout<<minn;
	}else{
		cout<<"-1";
	}
    return 0;
}

谢谢各位DL

2020/12/13 17:11
加载中...