Time Limit: 1000 MS Memory Limit: 32768 KB

Description
无聊的陶陶准备编写一款游戏,名字就叫做“马踏飞燕”,在这款游戏中有个一个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都能做,我用的BFS(非常非常不熟练),用队列实现的,但是整个程序有瑕疵,等以后熟练了之后再改吧= =。下面是代码:

#include<iostream>
#include<queue>
using namespace std;
int pan[105][105]; //模拟棋盘
int movemethod[8][2]={{1,2},{1,-2},{2,-1},{2,1},{-1,2},{-1,-2},{-2,-1},{-2,1}};  //这个是存放可进行的移动的操作的数组,因为马能走8个方向。
struct loc{int x;int y;
};  //存放坐标的结构体
loc locc;
int main()
{queue<loc> de;int x,y,m,n,times=1,j=1;bool flag=0;  //判断在规定的次数中找没找到燕 cin>>x>>y>>m>>n;locc.x=x;locc.y=y;de.push(locc);  //对队列初始化 while(times<=4)  //找4轮 {if(times==1) j=1;if(times==2) j=8;if(times==3) j=64;if(times==4) j=512;  //上面4句均是迷惑操作,实属无奈之举,因为我很不熟练啊,这样不能保证所有数据都对。 for(int k=1;k<=j;++k)//我想做的是,遍历完本轮所有坐标,可惜我不会实现 {for(int i=0;i<8;++i)//8个方向每个都试一试 {locc.x=de.front().x+movemethod[i][0];locc.y=de.front().y+movemethod[i][1];if(locc.x>100||locc.x<1||locc.y>100||locc.y<1)//检测是否越界 continue;//if(pan[locc.x][locc.y]==0)//{pan[locc.x][locc.y]=1;//这个是中间调试的时候有用的 de.push(locc);//坐标进队 //}if(locc.x==m&&locc.y==n)//如果找到目标,flag=1,并且退出循环。 {flag=1;break;}}if(flag) break;//找到目标退出循环。 de.pop();//一个坐标找完要扔掉它方便对下一个坐标进行操作。 }times++;//准备下一轮 }//for(int i=10;i<=20;++i)//{//for(int j=10;j<=20;++j)//{//cout<<pan[i][j]<<" ";//}//cout<<endl;//}if(flag) cout<<"Y\n";else cout<<"N\n";return 0;
}

我一定会回来的。

SDNUOJ 1025.马踏飞燕(DFS||BFS))相关推荐

  1. SDNU 1025 马踏飞燕 DFS

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

  2. SDNUOJ 1025.马踏飞燕

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

  3. 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)

    [题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...

  4. POJ2308连连看dfs+bfs+优化

    DFS+BFS+MAP+剪枝 题意:       就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路:      首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...

  5. 链式前向星模板 建图+dfs+bfs+dijkstra

    边没有用struct封装起来,节点和边的计数起点如果不符合习惯可以稍作修改 建图+DFS+BFS #include <cstdio> #include <cstring> #i ...

  6. 算法 - DFS/BFS

    DFS函数大概率会传递"位置信息",根据位置信息获取下一步的选择,(大部分是在循环中)选择.执行.回退 例如N皇后的 棋盘位置(x, y),组合问题的 idx DFS函数的目的是, ...

  7. [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]

    [问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...

  8. 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现

    简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...

  9. java bfs dfs_java优先搜索(DFS/BFS)实际应用

    深度优先搜索DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.广度优先搜索BFS是Breadth First Sear ...

最新文章

  1. [ruby] wxRuby安装
  2. python3 subprocess.check_output 执行shell命令 返回结果
  3. AHOI2009 中国象棋
  4. python expect模块_PYTHON基础语法全面总结
  5. vue ui 启动,浏览器报错Unexpected token
  6. java junit autowired_写Junit测试时用Autowired注入的类实例始终为空怎么解?
  7. ad转换器工作原理_AD转换中参考电压的作用
  8. 2022十大科技趋势
  9. 华为申请注册华为鸿蒙商标,华为申请注册“华为鸿蒙”商标,自研操作系统或将实现?-控制器/处理器-与非网...
  10. linux_iptables 详解
  11. vue-cli 里axios的使用
  12. 2022搜狐校园 情感分析 × 推荐排序 算法大赛
  13. 前言——前端转型之殇
  14. java计算机毕业设计Web企业差旅在线管理系统源码+mysql数据库+系统+lw文档+部署
  15. UC浏览器设置允许访问剪贴板网址的方法
  16. 在 vi 编辑器中的命令模式下,删除当前光标处的字符使用 __ 命 令。
  17. 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法
  18. oracle rac linux下安装
  19. HOG 特征提取算法(实践篇)
  20. CMOS Sensor介绍

热门文章

  1. 红眼病患者有很多注意事项,尤其是在饮食上
  2. 在vue-cli中以烤串风格命名变量和属性
  3. 如何在VR全景中添加婚庆系统?婚礼喜帖教程详解
  4. verilog全局变量和局部变量定义
  5. TOJ 3990.I guess the gift is a bag! II(质因数、欧拉函数好题)
  6. Hadoop2.2.0 中错误总结之(org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test._COPYING)
  7. 我的键盘的最终选择居然是薄膜
  8. Word转换PDF格式的C#第二版(不再使用WSH宿主脚本)
  9. LomoX界面库-高仿QQ2011、QQ音乐盒等
  10. 操作系统-第九章虚拟内存