洛谷P1747-好奇怪的游戏(BFS)

简介: 洛谷P1747-好奇怪的游戏(BFS)

题目背景:


《爱与愁的故事第三弹·shopping》娱乐章。

调调口味来道水题。


题目描述:



爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似象棋,但是只有黑白马各一匹,在点x1,y1和x2,y2上。它们得从点x1,y1和x2,y2走到1,1。这个游戏与普通象棋不同的地方是:马可以走“日”,也可以像象走“田”。现在爱与愁大神想知道两匹马到1,1的最少步数,你能帮他解决这个问题么?


输入格式:


第1行:两个整数x1,y1


第2行:两个整数x2,y2


输出格式:


第1行:黑马到1,1的步数

第2行:白马到1,1的步数


样例输入:


12 16

18 10


样例输出:


8

9


说明/提示:


100%数据:x1,y1,x2,y2<=20(切记,n可不是开到20就OK的,地图范围开小了会WA的!!!)


AC Code:


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=101;//这是个坑点,N开小了就会WA 
bool book[N][N];//标记数组 
int m,n,p,q,head,tail;
//题目描述中说马不仅可以走日,也可以走田,所以一共有12个方向 
int dx[]={-1,-2,-2,-2,-2,-1,1,2,2,2,2,1};
int dy[]={2,2,1,-1,-2,-2,-2,-2,-1,1,2,2};
struct node {
  int x,y,step;
}que[N*N];//定义结构体模拟队列 
bool judge(int x,int y) {//不越界,并且这个点没有访问过 
  if(x>=1&&x<=N&&y>=1&&y<=N&&book[x][y]==false) {
    return true;
  }
  return false;
}
void bfs(int a,int b) {
  head=tail=1;//初始化队头队尾 
  que[head].x=a;//起点入队,这次终点是(1,1) 
  que[head].y=b;
  que[head].step=0;//步数初始化为0 
  book[a][b]=true;//标记该点已走过 
  tail++;//起点入队,队尾向后移动一格 
  while(head<tail) {
    for(int i=0;i<12;i++) {//12个方向搜索 
      int tx=que[head].x+dx[i];
      int ty=que[head].y+dy[i];
      if(judge(tx,ty)) {//合法判断 
        book[tx][ty]=true;//标记新入队的点 
        que[tail].x=tx;//新的点入队 
        que[tail].y=ty;
        que[tail].step=que[head].step+1;//步数更新+1 
        tail++;//相应的队尾向后移动一格 
        if(tx==1&&ty==1) {//走到终点 
          printf("%d\n",que[tail-1].step);
          return ;
        }
      }
    }
    head++;//队头向后移动一格,继续下一个点的搜索 
  }
  return ;
}
int main() {
  memset(book,false,sizeof(book));//第一次搜索前,标记数组清零 
  scanf("%d %d",&m,&n);
  bfs(m,n);//搜索黑马 
  memset(book,false,sizeof(book));//注意:第二次搜索前,标记数组一定要再次清零!!! 
  scanf("%d %d",&p,&q);
  bfs(p,q);//搜索白马 
  return 0;
}

相关文章
|
移动开发 Android开发 容器
uniapp中使用videojs构建H5直播播放器
【10月更文挑战第14天】这两天在开发H5直播带货功能模块,使用原生的video播放器播放不了m3u8的流地址,于是找了videojs,参考了网上的一些资料研究了一下,感觉还不错,videojs播放m3u8流地址还挺稳定的,下面就简单记录一下uniapp里面使用方式
1551 129
Cursor + qwen2.5-coder 32b 的配置方式
安装Cursor后,进入设置修改OpenAI基础URL为阿里云的DashScope接口,并添加Qwen2.5-Coder 32B模型。需先访问阿里云百灵控制台申请免费Key。配置完成后,即可使用该模型进行开发和测试。
8533 2
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
586 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
233 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
822 60
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1164 157