• BFS-基础模版


    /*
        小水题当个模版
    */
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    #include <queue>
    #include <stack>
    #include <vector>
    #include <map>
    #include <set>
    #define M 1000  //修改点:数据大小
    
    //修改点:结构体内容
    struct node
    {
        int x,y;
        int step;
    };
    struct node front,rear;
    
    //修改点:行走方式
    int xx[8]={-2,-1,1,2,2,1,-1,-2};
    int yy[8]={1,2,2,1,-1,-2,-2,-1};
    
    bool visit[M][M];
    int n,ansx,ansy;
    queue<node>q;
    
    int BFS(int x,int y)
    {
        if(x==ansx&&y==ansy)
            return 0;
        int dx,dy,i;
        front.x=x,front.y=y,front.step=0;
        q.push(front);
        visit[x][y]=true;
        while(!q.empty())
        {
            front=q.front();
            q.pop();
            for(i=0;i<8;i++)
            {
                dx=front.x+xx[i],dy=front.y+yy[i];
                if(dx>=0&&dx<n&&dy>=0&&dy<n&&!visit[dx][dy])
                {
                    visit[dx][dy]=true;
                    if(dx==ansx&&dy==ansy)
                        return front.step+1;
                    rear.x=dx,rear.y=dy,rear.step=front.step+1;
                    q.push(rear);
                }
            }
        }
    }
    
    int main()
    {
        int t,x,y,ans;
        scanf("%d",&t);
        while(t--)
        {
            while(!q.empty()) q.pop();
            memset(visit,false,sizeof(visit));
            scanf("%d",&n);
            scanf("%d%d",&x,&y);
            scanf("%d%d",&ansx,&ansy);
            ans=BFS(x,y);
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    大教堂和市集
    VB相关资源
    什么样的团队才是优秀的团队
    走过2007
    一种简单实用的错误码构建方法
    熊的困惑
    调测中的反思
    PowerPC852T的SMC初始化—串口通信
    Silverlight Listbox 取消全选的方法
    电脑读不出U盘,有一个黄色感叹号的解决方法
  • 原文地址:https://www.cnblogs.com/mochenmochen/p/5156898.html
Copyright © 2020-2023  润新知