【bfs】Knight Moves
【题目描述】
输入nn代表有个n×nn×n的棋盘,输入开始位置的坐标和结束位置的坐标,问一个骑士朝棋盘的八个方向走马字步,从开始坐标到结束坐标可以经过多少步。

【输入】
首先输入一个nn,表示测试样例的个数。
每个测试样例有三行。
第一行是棋盘的大小L(4≤L≤300)L(4≤L≤300);
第二行和第三行分别表示马的起始位置和目标位置(0..L−1)(0..L−1)。
【输出】
马移动的最小步数,起始位置和目标位置相同时输出00。
【输入样例】
3 8 0 0 7 0 100 0 0 30 50 10 1 11 1
【输出样例】
5 28 0 【思路】:简单的bfs求最优解,主要是注意八个方向
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
#include<cstring>
using namespace std;
;
;
inline int read() {
char c = getchar();
, f = ;
') {
;
c = getchar();
}
+ c - ', c = getchar();
return x * f;
}
//马移动的最小步数,起始位置和目标位置相同时输出0。
/*
首先输入一个n,表示测试样例的个数。
每个测试样例有三行。
第一行是棋盘的大小L(4≤L≤300);
第二行和第三行分别表示马的起始位置和目标位置(0..L?1)。
*/
struct node {
int x,y,setp;
};
][],sx,sy,n;
][]= {{-,},{-,},{,},{,},{,-},{,-},{-,-},{-,-}};
int main() {
int N;
cin>>N;
pyyyyyy:
while(N--) {
cin>>n;
; i<=n; ++i) {
; j<=n; ++j) {
visit[i][j]=;
}
}
cin>>bx>>by;
cin>>sx>>sy;
if(bx==sx&&by==sy) {
cout<<<<endl;
}
queue<node>q;
visit[bx][by]=;
q.push((node) {
bx,by,
});
while(!q.empty() ) {
node p=q.front();
q.pop();
; i<; ++i) {
];
];
if(px==sx&&py==sy) {
cout<<p.setp<<'\n';
goto pyyyyyy;
}
&&px<=n&&py>&&py<=n&&!visit[px][py]) {
visit[px][py]=;
node kkk;
kkk.x=px;
kkk.y=py;
kkk.setp=p.setp+;
q.push(kkk);
}
}
}
}
;
}
【bfs】Knight Moves的更多相关文章
- 1450:【例 3】Knight Moves
1450:[例 3]Knight Moves 题解 这道题可以用双向宽度搜索优化(总介绍在 BFS ) 给定了起始状态和结束状态,求最少步数,显然是用BFS,为了节省时间,选择双向BFS. 双向B ...
- 【arc073f】Many Moves(动态规划,线段树)
[arc073f]Many Moves(动态规划,线段树) 题面 atcoder 洛谷 题解 设\(f[i][j]\)表示第一个棋子在\(i\),第二个棋子在\(j\)的最小移动代价. 发现在一次移动 ...
- HDU 1372 Knight Moves【BFS】
题意:给出8*8的棋盘,给出起点和终点,问最少走几步到达终点. 因为骑士的走法和马的走法是一样的,走日字形(四个象限的横竖的日字形) 另外字母转换成坐标的时候仔细一点(因为这个WA了两次---@_@) ...
- 【习题 6-4 UVA-439】Knight Moves
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] bfs模板题 [代码] /* 1.Shoud it use long long ? 2.Have you ever test sev ...
- 【广搜】Knight Moves
题目描述 Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him can move knights fr ...
- 【POJ 2243】Knight Moves
题 Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are ...
- 【BFS】Help the Princess!
题目描述 The people of a certain kingdom make a revolution against the bad government of the princess. T ...
- 【bfs】抓住那头牛
[题目] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次 ...
- 【bfs】拯救少林神棍(poj1011)
Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度.请你 ...
随机推荐
- Zk搭建(Zookeeper)
第一步: 上传----解压 tar -zxvf zookeeper-3.4.5.tar.gz---- 配置zk的环境变量 ----------配置源码 vim ...
- 消除element.style { }
1.在写前台页面时,我们会发现控制台里会自动出现一些样式覆盖掉我们定义的样式: 解决的办法: 把被覆盖的样式单独定义出来,并在样式后面加上 !important,表示高优先级.
- selenium处理alert弹出框
import time from selenium import webdriver driver =webdriver.Chrome(r"D:\工具包\chromedriver.exe&q ...
- JEECG 不同(角色的)人对同样的字段数据,使用不同的字段验证规则
JEECG智能开发平台v3 开发指南http://www.jeecg.org/book/jeecg_v3.html jeecg: JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元” ...
- Es6数值拓展
Es6数值拓展 一,Number扩展 1,ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 将0b和0o前缀的字符串数值转为十进制,要使用Number方法 N ...
- MyEclipse 配置 Tomcat
安装好Tomcat,MyEclipse 之后,利用这两个工具可以开发部署Web 应用,步骤相对手动部署要简洁的多,这里有一个特别要注意的地方:系统里安装JDK.Tomcat.MyEclipse 的版本 ...
- Day 3-6 生成器&迭代器
---恢复内容开始--- 列表生成式: list = [i*i for i in range(20)] # 这就是一个列表生成式 print(list) # [0, 1, 4, 9, 16, 25, ...
- 剑指offer(17)层次遍历树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. public class Solution { ArrayList<Integer> list = new ArrayLis ...
- laravel5.3安装redis扩展包
1,编辑 laravel 根目录下的 composer.json 文件: "require": { "php": ">=5.6.4", ...
- CentOS6.8 安装配置Mysql
1.下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2.安装mysql-commun ...