zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    web print
    datediff
    Typical AJAX
    sql中构建sql语句,再exec这条SQL语句
    ASP.NET中将数据输出到WORD、EXCEL、TXT、HTM
    sql中添加单引号
    sql语句批处理
    日期分组
    异步线程
    电脑内存大有什么好处?
  • 原文地址:https://www.cnblogs.com/mochenmochen/p/5156898.html
Copyright © 2011-2022 走看看