SDNUOJ 1025.马踏飞燕(DFS||BFS))
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))相关推荐
- SDNU 1025 马踏飞燕 DFS
搜了哈发现都在用bfs在做 然而我不会bfs 所以发一哈dfs的代码 虽然马踏飞燕加强版1027是没法用dfs做的23333 #include<cstdio> #include<io ...
- SDNUOJ 1025.马踏飞燕
Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 920 Accepted Submission(s): 37 ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...
- POJ2308连连看dfs+bfs+优化
DFS+BFS+MAP+剪枝 题意: 就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路: 首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...
- 链式前向星模板 建图+dfs+bfs+dijkstra
边没有用struct封装起来,节点和边的计数起点如果不符合习惯可以稍作修改 建图+DFS+BFS #include <cstdio> #include <cstring> #i ...
- 算法 - DFS/BFS
DFS函数大概率会传递"位置信息",根据位置信息获取下一步的选择,(大部分是在循环中)选择.执行.回退 例如N皇后的 棋盘位置(x, y),组合问题的 idx DFS函数的目的是, ...
- [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]
[问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...
- 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现
简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...
- java bfs dfs_java优先搜索(DFS/BFS)实际应用
深度优先搜索DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.广度优先搜索BFS是Breadth First Sear ...
最新文章
- [ruby] wxRuby安装
- python3 subprocess.check_output 执行shell命令 返回结果
- AHOI2009 中国象棋
- python expect模块_PYTHON基础语法全面总结
- vue ui 启动,浏览器报错Unexpected token
- java junit autowired_写Junit测试时用Autowired注入的类实例始终为空怎么解?
- ad转换器工作原理_AD转换中参考电压的作用
- 2022十大科技趋势
- 华为申请注册华为鸿蒙商标,华为申请注册“华为鸿蒙”商标,自研操作系统或将实现?-控制器/处理器-与非网...
- linux_iptables 详解
- vue-cli 里axios的使用
- 2022搜狐校园 情感分析 × 推荐排序 算法大赛
- 前言——前端转型之殇
- java计算机毕业设计Web企业差旅在线管理系统源码+mysql数据库+系统+lw文档+部署
- UC浏览器设置允许访问剪贴板网址的方法
- 在 vi 编辑器中的命令模式下,删除当前光标处的字符使用 __ 命 令。
- 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法
- oracle rac linux下安装
- HOG 特征提取算法(实践篇)
- CMOS Sensor介绍
热门文章
- 红眼病患者有很多注意事项,尤其是在饮食上
- 在vue-cli中以烤串风格命名变量和属性
- 如何在VR全景中添加婚庆系统?婚礼喜帖教程详解
- verilog全局变量和局部变量定义
- TOJ 3990.I guess the gift is a bag! II(质因数、欧拉函数好题)
- Hadoop2.2.0 中错误总结之(org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test._COPYING)
- 我的键盘的最终选择居然是薄膜
- Word转换PDF格式的C#第二版(不再使用WSH宿主脚本)
- LomoX界面库-高仿QQ2011、QQ音乐盒等
- 操作系统-第九章虚拟内存