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 ...
最新文章
- 自主数据类型:在TVM中启用自定义数据类型探索
- 疫情可视化,基于知识图谱的AI“战疫”平台如何做?
- synchronized 与 Reentrant均为可重入锁 区别后者比前者增加了长时等待可中断 设置是否公平锁 绑定多个条件
- 数据挖掘中分类算法小结
- 2016.3.2(String 类)
- 使用绘图API自定义组件
- boost::graph模块使用write_graphviz 输出 BGL adjacency_list 的简单示例
- hdu3689(kmp+dp)
- Android 应用开发(20)--- 定义自定义应用程序权限
- UI设计灵感|逻辑感十足的数据可视化界面设计
- HDU 4927 大数运算
- 从面试官甄别项目经验的角度,说说如何在简历中写项目经验(java后端方向)
- 鸿蒙只是电视机,荣耀智慧屏首发抢先体验:电视只是小功能,鸿蒙系统才是真亮点...
- 数据分享和开源软件有助于对抗新型冠状肺炎,开源布道师等;开源之道每周评论2020 03 16...
- 谷歌借Google Play重返中国,这次能成功吗?
- db2和相关驱动的下载
- 二进制1010.0101转换为十进制
- ssh报错:no matching host key type found. Their offer: ssh-rsa
- item_get - VVIC根据ID取商品详情 API
- python爬虫获取豆瓣TOP25电影名称和评分