openjudge_2.5基本算法之搜索_917:Knight Moves

news2025/1/12 18:44:19

题目

917:Knight Moves
总时间限制: 1000ms 内存限制: 65536kB
描述
Background
Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him can move knights from one position to another so fast. Can you beat him?
The Problem
Your task is to write a program to calculate the minimum number of moves needed for a knight to reach one point from another, so that you have the chance to be faster than Somurolov.
For people not familiar with chess, the possible knight moves are shown in Figure 1.
在这里插入图片描述

输入
The input begins with the number n of scenarios on a single line by itself.
Next follow n scenarios. Each scenario consists of three lines containing integer numbers. The first line specifies the length l of a side of the chess board (4 <= l <= 300). The entire board has size l * l. The second and third line contain pair of integers {0, …, l-1}*{0, …, l-1} specifying the starting and ending position of the knight on the board. The integers are separated by a single blank. You can assume that the positions are valid positions on the chess board of that scenario.
输出
For each scenario of the input you have to calculate the minimal amount of knight moves which are necessary to move from the starting point to the ending point. If starting point and ending point are equal,distance is zero. The distance must be written on a single line.
样例输入
3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1
样例输出
5
28
0

翻译

题目:移动骑士
背景:
Somurov先生,确实是一位出色的国际象棋棋手,声称除了他之外,没有人能如此迅速地将骑士从一个位置移动到另一个位置。你能打败他吗?
问题:
你的任务是编写一个程序来计算骑士从一个点到另一个点所需的最小移动次数,这样你就有机会比索穆罗洛夫更快。
对于不熟悉国际象棋的人来说,可能的骑士招式如图1所示。
输入:
输入以单行上的场景数n开始。
接下来是n个场景。每个场景由包含整数的三行组成。第一行指定棋盘一侧的长度l(4<=l<=300)。整个棋盘的大小为ll。
第二行和第三行包含一对整数{0,…,l-1}
{0,…,l-1},指定骑士在棋盘上的起始和结束位置。整数由一个空格分隔。
您可以假设这些位置是该场景棋盘上的有效位置。
输出:
对于输入的每个场景,您必须计算从起点移动到终点所需的骑士移动的最小数量。如果起点和终点相等,则距离为零。距离必须写在一行上。

理解

1.出发点到目的地的最短距离。用宽搜撒一次就搞定
2.深搜就得回溯尝试所有的线路。

代码

#include <bits/stdc++.h>
//#include <windows.h>
using namespace std;
struct point{
int x,y,t;
}o,p[310][310];
int n,w,
sx,sy,
ex,ey,
d[8][2]={{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};
void view(){
cout<<“地图”<<endl;
cout<<“列:\t”;for(int j=1;j<=w;j++)cout<<j<<“\t”;cout<<endl;
for(int i=1;i<=w;i++){
cout<<i<<“行\t”;
for(int j=1;j<=w;j++)cout<<p[i][j].t<<“\t”;
cout<<endl;
}
//Sleep(2000);
}
int main(){
//freopen(“data.cpp”,“r”,stdin);
cin>>n;
while(n–){
queue q;
cin>>w>>sx>>sy>>ex>>ey;
for(int i=1;i<=w;i++)
for(int j=1;j<=w;j++)p[i][j]=point{i,j,0};
//view();
p[sx+1][sy+1].t=1;
q.push(point{sx+1,sy+1,0});
int x,y;
while(!q.empty()){
o=q.front();q.pop();
//cout<<“出发:”<<o.x<<“,”<<o.y<<“=”<<o.t<<endl;
if(o.xex+1&&o.yey+1){
cout<<o.t<<endl;break;
}
for(int i=0;i<8;i++){
x=o.x+d[i][0],y=o.y+d[i][1];
if(x<1||x>w||y<1||y>w||p[x][y].t)continue;
p[x][y].t=o.t+1;
//cout<<“到达:”<<x<<“,”<<y<<“=”<<p[x][y].t<<endl;
q.push(p[x][y]);
}
//view();
}
}

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡尔曼滤波-剔除异常值的影响

二郎在看论文的时候&#xff0c;发现了一个针对卡尔曼滤波过程中&#xff0c;测量向量出现误差导致滤波发散的处理方法。 该方法也可以扩展到其他问题中使用&#xff0c;所以二郎在这里写一下。 论文原文&#xff1a;https://www.mdpi.com/1424-8220/20/17/4710 论文翻译对应…

DS:二叉树的链式存储及遍历

​ 欢迎来到Harper.Lee的学习世界&#xff01; 博主主页传送门&#xff1a;Harper.Lee的博客主页 想要一起进步的uu可以来后台找我哦&#xff01; ​ 一、引入 1.1 二叉树的存储方式 在之前接触到的满二叉树和完全二叉树使用的是数组的存储方式&#xff08;DS&#xff1a;树与…

HarmonyOS SDK助力鸿蒙原生应用“易感知、易理解、易操作”

6月21-23日&#xff0c;华为开发者大会&#xff08;HDC 2024&#xff09;盛大开幕。6月23日上午&#xff0c;《HarmonyOS开放能力&#xff0c;使能应用原生易用体验》分论坛成功举办&#xff0c;大会邀请了多位华为技术专家深度解读如何通过根技术、开放能力、场景化控件等亮点…

越复杂的CoT越有效吗?Complexity-Based Prompting for Multi-step Reasoning

Complexity-Based Prompting for Multi-step Reasoning 论文&#xff1a;https://openreview.net/pdf?idyf1icZHC-l9 Github&#xff1a;https://github.com/FranxYao/chain-of-thought-hub 发表位置&#xff1a;ICLR 2023 Complexity-Based Prompting for Multi-step Reason…

C#基于SkiaSharp实现印章管理(1)

最近对着微软的教程学习SkiaSharp的概念及用法&#xff0c;由于之前使用GDI绘制过坐标系、印章等程序&#xff0c;准备使用SkiaSharp、SKControl控件编写简单的印章设计功能&#xff0c;并能用印章对图片盖章。本文实现创建印章背景、序列化及反序列化印章对象等功能。   VS2…

AIGC-Animate Anyone阿里的图像到视频 角色合成的框架-论文解读

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation 论文:https://arxiv.org/pdf/2311.17117 网页:https://humanaigc.github.io/animate-anyone/ MOTIVATION 角色动画的目标是将静态图像转换成逼真的视频&#xff0c;这在在线零…

字符串根据给定关键词进行高亮显示

问题 一般使用搜索引擎的时候我们会发现,搜索出来的内容都对我们搜索的关键词进行了高亮显示, 这样我们能很直观的看出是不是我们想要的结果, 最近我也遇到了类似的功能, 因为关于舆情的系统使用到了ES, 一开始心想ES本身就有支持的API实现起来不难, 但我这里的需求还不太一样…

【fastapi+mongodb】使用motor操作mongodb(三)

本篇文章介绍mongodb的删和改&#xff0c;下面是前两篇文章的链接&#xff1a; 【fastapimongodb】使用motor操作mongodb 【fastapimongodb】使用motor操作mongodb&#xff08;二&#xff09; delete delete 的用法基本和查找一致&#xff0c;包括delete_one&#xff08;删除…

【报错】JDBC SQL语句表名报错 解决办法

解决办法 修改检测等级 不是检测有问题吗&#xff0c;那就将idea的检测问题取消掉或者修改检测问题等级&#xff0c;根本问题上我们写的sql语句是一个字符串传过去&#xff0c;只要在mysql查询语句能够正确执行&#xff0c;不要这种检测也罢。

Qt: QPushButton 按钮实现 上图标下文字

效果如下&#xff1a; 实现有如下几种方式&#xff1a; 1. 使用 QPushButton 设置 setStyleSheet 例&#xff1a; ui->recorder->setStyleSheet("QPushButton{"\"border: 1px solid #00d2ff; "\"min-height: 60px; "\"col…

MSPM0G3507——定时器例程1——TIMA_periodic_repeat_count

以下示例以周期模式配置TimerA0&#xff0c;并使用重复计数功能每隔2秒切换一次GPIO。注意&#xff1a;重复计数功能特定于TimerA0实例&#xff0c;而不是其他TimerA实例。这里是一次500毫秒&#xff0c;重复了四次 主函数&#xff1a; #include "ti_msp_dl_config.h&quo…

小钢炮MiniCPM是如何炼成的?-面壁智能 智源大会

10:1steps&#xff0c;退火阶段需要更高质量的数据

pcl::PointXYZRGBA造成点云无法显示

如果pcd文件没有rgba信息&#xff0c;使用pcl::PointXYZRGBA类型打开会提示以下信息&#xff1a; Failed to find match for field rgba另外&#xff0c;显示出来的点云是黑色&#xff0c;如果使用默认背景色为黑色&#xff0c;就无法显示点云了。 如果设置其它背景色&#xf…

20240621日志:大模型压缩-从闭源大模型蒸馏

目录 1. 核心内容2. 方法2.1 先验估计2.2 后验估计2.3 目标函数 3. 交叉熵损失函数与Kullback-Leibler&#xff08;KL&#xff09;损失函数 location&#xff1a;beijing 涉及知识&#xff1a;大模型压缩、知识蒸馏 Fig. 1 大模型压缩-知识蒸馏 1. 核心内容 本文提出在一个贝…

文华财经多空精准买卖点止损止盈数值主图指标公式源码

文华财经多空精准买卖点止损止盈数值主图指标公式源码&#xff1a; DD:EVERY(H>HV(H,20),1); KK:EVERY(L<LV(L,20),1); D:DD&&SUM(DD,BARSLAST(KK))1; K:KK&&SUM(KK,BARSLAST(DD))1; Y:1; DRAWCOLORKLINE(Y&&ISDOWN,COLORYELLOW,0); DRAW…

Spring源码之手写DI

Spring源码之手写DI 我们来回顾一下前面手写IOC的内容。 一、DI介绍 DI(Dependency injection)依赖注入。对象之间的依赖由容器在运行期决定&#xff0c;即容器动态的将某个依赖注入到对象之中。说直白点就是给Bean对象的成员变量赋值。 在这里我们就需要明白几个问题。 1.…

go语言day03

目录 一、 go语言的数据类型&#xff1a; 二、声明赋值的简写形式&#xff1a; ":" 1&#xff09;重复使用的编译错误 2&#xff09;在全局变量中使用 : 会报编译错误 三、变量规则&#xff1a; 0&#xff09;变量的命名规则&#xff1a; 1&#xff09;创建的局部…

西瓜视频基于 Hertz 的微服务落地实践

# 1. 西瓜视频微服务架构设计 ## 1.1 西瓜视频介绍 **西瓜视频**是一个开眼界、涨知识的视频 App&#xff08;Informative Video Platform&#xff09;&#xff0c;作为国内领先的**中长视频**平台&#xff0c;它源源不断地为不同人群提供优质内容&#xff0c;让人们看到更丰…

OpenAPI

大家好我是苏麟 , 今天带来一个前端生成接口的工具 . 官网 : GitHub - ferdikoomen/openapi-typescript-codegen: NodeJS library that generates Typescript or Javascript clients based on the OpenAPI specification 安装命令 npm install openapi-typescript-codegen --sa…

flex布局无法设置图片icon和文本垂直居中对齐问题

项目场景&#xff1a; 需要实现下面的效果&#xff0c;即图标和文字垂直对齐。 问题描述 直接使用flex布局并设置垂直居中&#xff0c;发现并没有垂直对齐&#xff0c;图片明显偏上。 .wrapper {display: flex;align-items: center; }.view-icon {height: 28px;width: 28px;m…