无聊的陶陶准备编写一款游戏,名字就叫做“马踏飞燕”,在这款游戏中有个一个100*100的坐标,把马放在任意一个坐标点,再把燕子放在任意一个坐标点,并且燕子不会移动,马只能按照象棋规则走“日”。若4步之内能“踏”到燕子,则成功。笨蛋的陶陶不知道该怎么去写,现在请你帮助他。
走“日”说明:当马的坐标为(5,5)的时候,马下一步可以走的坐标有8个点,分别为(4,3)(6,3)(3,4)(7,4)(3,6)(7,6)(4,7)(6,7)

Input

第一行两个整数,马的起始坐标x,y (0<x,y<100)
第一行两个整数,燕子的坐标m,n (0<m,n<100)

Output

若4步之内能“踏”到燕子,则输出“Y”
若4步之内不能“踏”到燕子,则输出“N”

Sample Input

5 5
7 4

Sample Output

Y

Source

SDNU ACM-ICPC 2011复赛(2010级)

感觉用dfs和bfs都行

用dfs吧,这个仅限制四步所以做一个if判断就好,就把他看成寻常的地图,只不过步数有限制

我错的一个地方是随便return 了,注意这个bfs并没有递归,你随便一个条件不符合就return的话是提前结束这个函数,所以是不行滴

其它的还是很好实现

#include<iostream>
#include<memory.h>
#include<queue>
using namespace std;
const int Max = 2000 + 5;//高级~~
//const int Max = 100 + 5; 初级马踏飞燕
int mp[Max][Max];
int step[Max][Max];
int foot[8][2]={2,1,2,-1,-2,1,-2,-1,1,2,1,-2,-1,-2,-1,2};
int a,b,c,d;
int flag = 0;struct node{int x;int y;
};
queue<node> q;
void bfs()
{while(!q.empty()){if(flag)return;node en;en = q.front();q.pop();if(step[en.x][en.y] < 200) //4步题和200步题 {   node nexta; int nx,ny;                      //不能随便return 这里不是递归,return会直接结束这个函数 for(int i = 0;i < 8;i++){nx = en.x + foot[i][0];ny = en.y + foot[i][1];if(nx > 0 && nx < 2000 && ny > 0 && ny < 2000 && !step[nx][ny])//100*100地图和2000*2000地图 {if(nx == c && ny == d){flag = 1;return;}nexta.x = nx;nexta.y = ny;step[nx][ny] = step[en.x][en.y] + 1;q.push(nexta);}}}}
}
int main()
{cin>>a>>b>>c>>d;memset(mp,0,sizeof(mp));memset(step,0,sizeof(step));node be;be.x = a;be.y = b;q.push(be);bfs();if(flag){cout<<"Y"<<endl;}else{cout<<"N"<<endl;}return 0;}

SDNU__1025.马踏飞燕相关推荐

  1. SDNUOJ 1025.马踏飞燕

    Time Limit: 1000 MS    Memory Limit: 32768 KB Total Submission(s): 920    Accepted Submission(s): 37 ...

  2. sdnu1025 马踏飞燕

    题目 Description 无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一个100*100的坐标,把马放在任意一个坐标点,再把燕子放在任意一个坐标点,并且 ...

  3. SDNU 1025 马踏飞燕 DFS

    搜了哈发现都在用bfs在做 然而我不会bfs 所以发一哈dfs的代码 虽然马踏飞燕加强版1027是没法用dfs做的23333 #include<cstdio> #include<io ...

  4. SDNU 1027 马踏飞燕序

    这是一道标准的BFS题,先将题目贴一下: 写这道题就当是复习一下BFS吧 Description 上次的马踏飞燕是不是没玩够?无聊的lg准备编写一款游戏,就是加强版的"马踏飞燕", ...

  5. SDNU OJ 1025 马踏飞燕

    该题是一道使用BFS(广度优先搜索)的经典题目(当然如果你不怕麻烦,DFS也是可以的), 思路很简单,用queue存下各个情况每次都判断是否踏到燕子,并且记得记录深度. Description 无聊的 ...

  6. SDNUOJ 1025.马踏飞燕(DFS||BFS))

    Time Limit: 1000 MS Memory Limit: 32768 KB Description 无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一 ...

  7. SDNU 1027 马踏飞燕(续) 【BFS】

    Description 上次的马踏飞燕是不是没玩够?无聊的lg准备编写一款游戏,就是加强版的"马踏飞燕",在这款游戏中有个一个2000*2000的坐标,把马放在任意一个坐标点,再把 ...

  8. SDNU1025马踏飞燕

    再一次做,出现两个错误,一个是 使用BFS时,在添加新节点的时候队列尾指针qq+1忘记了//这种错误容易在测试样例过程中发现 另一个是 棋盘的范围问题:按照题意,棋盘应当包括边界坐标为0和100的直线 ...

  9. “马踏飞”AI机器人实现方案介绍

    当今互联网随处可见各种语音助手,从手机到智能音响,从机器人到手机App语音助手.随着公司业务的发展,今年我们也决定搭建自己的智能客服系统,同时结合公司自身业务,马踏飞燕App 旅游比价业务场景,同时参 ...

最新文章

  1. css如何做玻璃效果_拓展训练之后的效果保持工作该如何做?
  2. Opera在本博客的发文方法,fedora8下
  3. Android异步加载
  4. 《Head First Python》第三章--文件与异常
  5. pyecharts官方文档_中国疫情地图pyecharts
  6. Bean标签基本配置
  7. php 浏览器 兼容,兼容ie6浏览器的php下载文件代码分享
  8. Hibernate入门级实例
  9. 如何彻底搞懂面向 Web 开发者的正则表达式?
  10. 部署Vista(7)——创建一个最基本的应答文件
  11. java 分词获取词性_Ansj中文分词Java开发词性分类
  12. java 实现 excel 去重_用java对大量Excel表处理(去重,生成新属性,统计数量)
  13. 组装机怎么重装系统?组装机U盘装系统方法
  14. MAC 清除 DNS 缓存
  15. Git添加用户名、密码、修改用户名密码
  16. X Server移植指导之三 输出层移植 (XServer Porting Guide)
  17. 817考研c语言程序设计,2018年沈阳航空航天大学计算机院817C程序设计考研核心题库...
  18. python 自动化获取博科光纤交换机端口信息
  19. Sql Server 03
  20. 通过继承实现圆柱体面积体积的计算

热门文章

  1. Ubuntu使用过程的问题及解决办法
  2. 你战胜苦难,它就是你的财富;苦难战胜你,它就是你的屈辱
  3. okcc呼叫中心的的录音功能
  4. regiongrowing
  5. 《将军吟》杂记---莫应丰、著、人民文学出版社
  6. 赴港上市,能成为威马汽车的“续命稻草”吗?
  7. 【经典专题】反转链表——如何在链表中穿针引线
  8. 记录小问题:在使用java的ImageIO类来操作图片的时候,有时候图片生成出来背景失真,变成了橙红色
  9. Uri与UriMatcher
  10. MMDetection3D简单学习