首页 > 编程语言 >周六900C++班级2022-11-12-搜索练习

周六900C++班级2022-11-12-搜索练习

时间:2022-11-12 11:55:06浏览次数:68  
标签:11 900 12 ty int sy vis tail step

Knight Moves

#include<bits/stdc++.h>
using namespace std;
int nex[8][2] = {{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2}}; //方向数组
int vis[310][310]; //标记数组
int n,m,f,ans,sx,sy,ex,ey;
struct node{
    int x,y,step; //step步长 
}; 
node q[90005];
void bfs(int sx,int sy)
{
    int head = 1,tail = 1; //队首head,队尾tail
    q[tail].x = sx;
    q[tail].y = sy;
    q[tail].step = 0; //13行-15行:起点入队
    tail++; //队尾扩充 
    vis[sx][sy] = 1; //标记起点
    while(head<tail)
    {
        for(int i=0;i<8;i++) //循环队首head的8个方向
        {
            int tx = nex[i][0] + q[head].x; //下一步坐标tx = 第i个方向+队首head的x坐标
            int ty = nex[i][1] + q[head].y;
            if(tx<0||tx>=n||ty<0||ty>=n)continue;
            if(vis[tx][ty]==0) //tx,ty没有标记过
            {
                //标记入队并扩充队列长度 
                vis[tx][ty] = 1;
                q[tail].x = tx;
                q[tail].y = ty;
                q[tail].step = q[head].step + 1;
                tail++; 
            } 
            if(tx==ex && ty==ey){ //判断下一步是否是终点 
                f = 1; //终点标记f = 1
                ans = q[tail-1].step;
                break; 
            }
        }
        if(f)break;
        head++;
    }
}
int main()
{
    int t; //t组数据
    cin>>t;
    while(t--) //处理t组数据 
    {
        cin>>n>>sx>>sy>>ex>>ey; //输入地图大小和起点终点
        memset(vis,0,sizeof(vis)); //初始化标记数组为0 
        f = 0;ans = 0;
        if(sx==ex && sy==ey){ //起点为终点 
            cout<<0<<endl;
            continue;
        } 
        bfs(sx,sy); //将起点传入开搜
        cout<<ans<<endl;
    } 
     return 0;
}

 

标签:11,900,12,ty,int,sy,vis,tail,step
From: https://www.cnblogs.com/jyssh/p/16883396.html

相关文章

  • 米联客-MLK-FEP-DAQ422X硬件手册(125M/250M直流版-AD模块)
    1产品概述DAQ4225/4229数据采集模块采用一颗TI的ADS4225/4229低功耗高性能模数转换芯片,实现了2通道125/250MSPS模数转换,并且支持2路数字IO输入/输出触发功能......
  • 11.feign性能优化
    feign性能优化连接池配置,feign添加httpClient的支持1.引入依赖<!--httpClient的依赖--><dependency><groupId>io.github.openfeign</groupId>......
  • 12. $nextTick 的作用
    使用场景:我们改变dom结构所依赖的数据的时候,不能直接操作dom,因为dom还没有更新完成;作用:nextTick用来感知dom的更新完成,类似于updated函数; 原理:通过控制......
  • nove.12 跳跳
    跳跳以为是个最长路,结果是个贪心高度排序,然后每次跳高度差最大的点即可网上找了个证明,想法很好但是没说清楚,应该是这样的:要证明每次跳高度差最大的点最优,那么证明其中......
  • 11. 跨域怎么解决
    首先,跨域分为开发环境和生产环境的跨域,我们在开发环境可以使用proxy代理给target设置请求接口地址,以前使用的是jsonp跨域;生产环境使用Nginx反向代理; 延申问......
  • ESP8266--SDK开发(驱动WS2812B)
    文章目录​​一、WS2812彩灯介绍​​​​二、效果展示​​​​三、七色灯代码​​​​附:彩虹七色码值​​一、WS2812彩灯介绍WS2812是一个集控制电路与发光电路于一体的智能......
  • P3226 [HNOI2012]集合选数(状压 DP)
    P3226[HNOI2012]集合选数要求选出集合\(S\)满足如果\(x\)选择了,\(2x\)和\(3x\)都不能选择。求\(\{1,2,\dots,n\}\)的符合要求的子集数量。\(n\le10^5\)。......
  • 2022-11-11 这10天,纳斯达克V形反转的一点记录
    1.从11月2号开始,首先已经跌破上升趋势线2.联席会议开始,多头突然发力,2段上涨3.结果空头发力,多空争夺激烈。空头回落到多头的1/2甚至2/3以下,一定要出了!开盘,收盘,事件,会......
  • GL-Suggesting a book 20221104
    TopicSuggestingabookWhichbookisbeingdescribed?Canyouthinkofanymoregenres?IsShakespeareyourfavoriteauthororisAgathaChristiemoreyour......
  • GL-Planning a trip 20221103 same
    Planningatrip20221103Needtogetawayfromitall?Planyourdreamvacationwithyourclassmates,Whowouldyouliketogoonholidaywith?这节课有人吗?I......