SDNU 1027 马踏飞燕序
这是一道标准的BFS题,先将题目贴一下:
写这道题就当是复习一下BFS吧
Description
走“日”说明:当马的坐标为(5,5)的时候,马下一步可以走的坐标有8个点,分别为(4,3)(6,3)(3,4)(7,4)(3,6)(7,6)(4,7)(6,7)
Input
第一行两个整数,燕子的坐标 m,n (0<m,n<2000)
Output
若4步之内不能“踏”到燕子,则输出“N”
Sample Input
5 5 7 4
Sample Output
Y
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
using namespace std;
int x, y, n, m, flag;
int dir[8][2] = {1,2,2,1,1,-2,2,-1,-1,-2,-2,-1,-1,2,-2,1};
int vis[2005][2005];
struct node
{ int x, y;
};
void bfs(int startx, int starty)
{ queue<node> q; node tem; tem.x = startx; tem.y = starty; q.push(tem); while(!q.empty()) { if(flag) return ; node now, nex; now = q.front(); q.pop(); if(vis[now.x][now.y] <= 199) //累计步数{for(int i = 0; i < 8; ++i) { nex.x = now.x + dir[i][0]; nex.y = now.y + dir[i][1]; if(nex.x <= 0 || nex.x > 2000 || nex.y <= 0 || nex.y > 2000) continue; if(vis[nex.x][nex.y]) continue; //这里防止重复访问 if(nex.x == m && nex.y == n) { flag = 1; return ; } vis[nex.x][nex.y] = vis[now.x][now.y] + 1; q.push(nex); } }}
}
int main()
{ scanf("%d %d %d %d",&x,&y,&m,&n); flag = 0; bfs(x, y); if(flag==1) cout << "Y" << endl; else cout << "N" << endl; return 0;
}
这道题目要注意的一点就是题目中说要在4步之内完成,所以我们需要记录一下步数,这里用的方法是 原步数+1,通过构建结构体来实现,这样子每次向各个方向移动都能分别
记录对应的步数。
SDNU 1027 马踏飞燕序相关推荐
- SDNU 1027 马踏飞燕(续) 【BFS】
Description 上次的马踏飞燕是不是没玩够?无聊的lg准备编写一款游戏,就是加强版的"马踏飞燕",在这款游戏中有个一个2000*2000的坐标,把马放在任意一个坐标点,再把 ...
- SDNU 1025 马踏飞燕 DFS
搜了哈发现都在用bfs在做 然而我不会bfs 所以发一哈dfs的代码 虽然马踏飞燕加强版1027是没法用dfs做的23333 #include<cstdio> #include<io ...
- oracle大数据应用基础3;
------------------------day 1------------------------------------ 1 数据库与数据库管理系统 1.1什么是数据库? 就是一个保存数据用 ...
- SDNU OJ 1025 马踏飞燕
该题是一道使用BFS(广度优先搜索)的经典题目(当然如果你不怕麻烦,DFS也是可以的), 思路很简单,用queue存下各个情况每次都判断是否踏到燕子,并且记得记录深度. Description 无聊的 ...
- python 使用sort()函数和正则表达式(lambda)对os.listdir()获取的文件夹文件列表进行重新排序 乱序排序
# 排序函数,对文件列表进行排序 # 排序函数,对文件列表进行排序(filenames为文件夹文件的文件名的字符串列表) def sort_filenames(filenames):# (1)可以以l ...
- LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)
文章目录 1. 题目 2. 解题 2.1 暴力超时解 2.2 排序+最长上升子序 463 / 3709,前 12.5% 1240 / 9290,前13.3% 1. 题目 给你 n 个长方体 cuboi ...
- 插序计Spider.Financial.NumXL.v1.65.42892.1.Win32_64 2CD确准
插序计Spider.Financial.NumXL.v1.65.42892.1.Win32_64 2CD确准 Sysnopy Coretools vK-2015.06 SP5 Linux32_64 2 ...
- leetcode105.从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15 ...
- SDNUOJ 1025.马踏飞燕
Time Limit: 1000 MS Memory Limit: 32768 KB Total Submission(s): 920 Accepted Submission(s): 37 ...
最新文章
- 笔记本电脑处理器_苹果高管:我们都没有想到M1的性能有那么强|英特尔|处理器|iphone|ipad|笔记本电脑...
- 使用Clonezilla克隆系统
- 【Android View事件分发机制】滑动冲突
- 给GridView中的buttonField添加一个删除确认功能
- CentOS 编译Hadoop 2.6 32位
- python简述文件目录相对路径_【Python】 配置文件相对路径软件自动执行的工作目录...
- Xamarin.Forms Button长按事件
- CCIE-LAB-第十三篇-DHCP+HSRPV2+Track+DHCP Realy
- php 递归格式化数组,利用php递归实现无限分类 格式化数组的详解
- 字符串中的第一个唯一字符
- java split空值也保留_Java内存大家都知道,但你知道要怎么管理Java内存吗?
- 1流明等于多少lux_要想投影仪画质清晰,投影仪流明和对比度不得不看
- swagger -- 前后端分离的API接口
- jquery中ajax的post方法,jQuery中Ajax的get、post等方法详解
- canoe和python_CANoe开发从入门到精通
- 加密软件不能安装软件
- 汽车租赁管理系统的设计与实现(JSP+SqlServer在线租车网站)
- 遗传算法占用计算机空间,遗传算法
- 色彩空间与色彩深度。详细分析相机中sRGB/AdobeRGB、RAW/JPG到底该怎么选
- 梦幻西游手游经验任务链计算机,梦幻西游手游经验和道具任务链攻略
热门文章
- 低压400瓦同步电机驱动器方案低压400瓦驱动器方案,带霍尔传感器,恒转速,pi调节
- Vscode顶部菜单栏消失如何调出
- 打造灵动办公新体验,金山数字办公助力建筑央企实现办公“效率+安全“双提升
- 微软年度开发者大会,请亚马逊VP来站台?
- 元界快讯|工程院院士称6G将实现中国版元宇宙
- Java标识符的命名规则和命名规范
- 先进非线性控制方法 INDI 快速部署到PX4用于四旋翼控制(part1)
- 神经网络原理一个简单的神经网络模型搭建
- 重现DenseNet网络(基于keras)
- 计蒜客——[NOIP2012]Vigenère 密码