题解:
走迷宫问题的升级版
记录起点
把起点加入优先队列中
然后从起点开始BFS,需要破坏一个障碍物的时候 t++,每次走过一个点加入优先队列中
这样就可以保证每次从队列里面出来的是破坏障碍物数最小的了
下面代码中结构体里面的数据变量 z 可以不考虑(我之前用来记录走了几步)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <cstring>
using namespace std;
const int N = 110;
int T,n,m;
int sx,sy;
int maze[N][N];
bool vis[N][N];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
struct point
{
int x,y,t,z;///坐标x y 破坏障碍物数 走道当前点需要的步数
point(int x=0,int y=0,int t=0,int z=0,int flag=0):x(x),y(y),t(t),z