Ignatius and the Princess I(带路径的广搜)

题目
题意:给你一个图,从(0,0)出发,到达(n-1,m-1),X不能走,’.'可以走,但需要耗时1;数字是需要额外消耗时间,例如到达有个2这个点需要耗费3,问最少要多少时间;
代码:

#include
using namespace std;
char ans[205][205];
int n,m,sumt;
int flag[205][205];
bool book[205][205];
int temp[4][2]={1,0,-1,0,0,1,0,-1};
struct Node {
    int x,y,t;
    friend bool operator < (Node a,Node b) {
        return a.t>b.t;
    }
};

int bfs() {
    Node now,next;
    priority_queue Q;
    while(!Q.empty()) Q.pop();
    now.x=now.y=now.t=0;
    if(ans[0][0]>'0'&&ans[0][0]<='9') now.t=ans[0][0]-'0';
    Q.push(now),book[0][0]=false;
    while(!Q.empty()) {
        now=Q.top();
        Q.pop();
        if(now.x==n-1&&now.y==m-1) return now.t;
        for(int i=0;i<4;i++) {
            next.x=now.x+temp[i][0];
			next.y=now.y+temp[i][1];
            if(next.x>=0&&next.x=0&&next.y("<'0'&&ans[x][y]<='9') {
        int sum=ans[x][y]-'0';
        while(sum--) {
            cout<>n>>m&&n&&m) {
        memset(ans,0,sizeof(ans));
        memset(flag,0,sizeof(flag));
        for(int i=0;i>ans[i][j];
            }
        }
        memset(book,true ,sizeof(book));
        int cnt=bfs();
        if(cnt==-1) cout<<"God please help our poor hero."<'0'&&ans[0][0]<'9') {
                int sum=ans[0][0]-'0';
                while(sum--) {
                    cout<

你可能感兴趣的:(Ignatius and the Princess I(带路径的广搜))