SDNU__1025.马踏飞燕
无聊的陶陶准备编写一款游戏,名字就叫做“马踏飞燕”,在这款游戏中有个一个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.马踏飞燕相关推荐
- SDNUOJ 1025.马踏飞燕
Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 920 Accepted Submission(s): 37 ...
- sdnu1025 马踏飞燕
题目 Description 无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一个100*100的坐标,把马放在任意一个坐标点,再把燕子放在任意一个坐标点,并且 ...
- SDNU 1025 马踏飞燕 DFS
搜了哈发现都在用bfs在做 然而我不会bfs 所以发一哈dfs的代码 虽然马踏飞燕加强版1027是没法用dfs做的23333 #include<cstdio> #include<io ...
- SDNU 1027 马踏飞燕序
这是一道标准的BFS题,先将题目贴一下: 写这道题就当是复习一下BFS吧 Description 上次的马踏飞燕是不是没玩够?无聊的lg准备编写一款游戏,就是加强版的"马踏飞燕", ...
- SDNU OJ 1025 马踏飞燕
该题是一道使用BFS(广度优先搜索)的经典题目(当然如果你不怕麻烦,DFS也是可以的), 思路很简单,用queue存下各个情况每次都判断是否踏到燕子,并且记得记录深度. Description 无聊的 ...
- SDNUOJ 1025.马踏飞燕(DFS||BFS))
Time Limit: 1000 MS Memory Limit: 32768 KB Description 无聊的陶陶准备编写一款游戏,名字就叫做"马踏飞燕",在这款游戏中有个一 ...
- SDNU 1027 马踏飞燕(续) 【BFS】
Description 上次的马踏飞燕是不是没玩够?无聊的lg准备编写一款游戏,就是加强版的"马踏飞燕",在这款游戏中有个一个2000*2000的坐标,把马放在任意一个坐标点,再把 ...
- SDNU1025马踏飞燕
再一次做,出现两个错误,一个是 使用BFS时,在添加新节点的时候队列尾指针qq+1忘记了//这种错误容易在测试样例过程中发现 另一个是 棋盘的范围问题:按照题意,棋盘应当包括边界坐标为0和100的直线 ...
- “马踏飞”AI机器人实现方案介绍
当今互联网随处可见各种语音助手,从手机到智能音响,从机器人到手机App语音助手.随着公司业务的发展,今年我们也决定搭建自己的智能客服系统,同时结合公司自身业务,马踏飞燕App 旅游比价业务场景,同时参 ...
最新文章
- css如何做玻璃效果_拓展训练之后的效果保持工作该如何做?
- Opera在本博客的发文方法,fedora8下
- Android异步加载
- 《Head First Python》第三章--文件与异常
- pyecharts官方文档_中国疫情地图pyecharts
- Bean标签基本配置
- php 浏览器 兼容,兼容ie6浏览器的php下载文件代码分享
- Hibernate入门级实例
- 如何彻底搞懂面向 Web 开发者的正则表达式?
- 部署Vista(7)——创建一个最基本的应答文件
- java 分词获取词性_Ansj中文分词Java开发词性分类
- java 实现 excel 去重_用java对大量Excel表处理(去重,生成新属性,统计数量)
- 组装机怎么重装系统?组装机U盘装系统方法
- MAC 清除 DNS 缓存
- Git添加用户名、密码、修改用户名密码
- X Server移植指导之三 输出层移植 (XServer Porting Guide)
- 817考研c语言程序设计,2018年沈阳航空航天大学计算机院817C程序设计考研核心题库...
- python 自动化获取博科光纤交换机端口信息
- Sql Server 03
- 通过继承实现圆柱体面积体积的计算