一个辣鸡bfs

贼变态,wa了半天结果是因为bfs少写了一个return -1

#include
#include
#include
#include
#include
#include
using namespace std;
int n,m,k;
char map[25][25];
int vis[25][25][1200];
int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
struct node 
{
    int x,y,step,key;
};
bool check(int x, int y,int k)
{
    if(x<0 || x>=n || y<0 || y>=m || map[x][y] == '*')
    {
        return false;
    }
    return true ;
}

int bfs(int x,int y)
{
    queue Q;
    node a;
    a.x = x;
    a.y = y;
    a.step = 0;
    a.key = 0;
    vis[a.x][a.y][a.key] = 1;
    Q.push(a);
    while(!Q.empty())
    {
        node tmp = Q.front();
        Q.pop();
        if(tmp.step >= k)
        {
            return -1;
        }
        if(map[tmp.x][tmp.y] == '^')
        {
            if (tmp.step < k) return tmp.step;
        }
        
        for(int i=0;i<4;i++)
        {
            
            //printf("%d  ***  %d\n",tmp.x+dir[i][0],tmp.y+dir[i][1]);
            
            if(!check(tmp.x+dir[i][0],tmp.y+dir[i][1],tmp.key))
            {
                continue;
            }
            node gg;
            gg.x = tmp.x + dir[i][0];
            gg.y = tmp.y + dir[i][1];
            gg.step = tmp.step + 1;
            gg.key = tmp.key;
            if( map[gg.x][gg.y] >= 'a' && map[gg.x][gg.y] <= 'j')
            {
                
                int num = map[ gg.x ][ gg.y ] - 'a';
                int bur = 1<= 'A' && map[gg.x][gg.y] <= 'J')
            {
                int num = map[gg.x][gg.y] - 'A';
                int bur = 1<

你可能感兴趣的:(一个辣鸡bfs)