(ssl1456)骑士旅行

2024-01-30 06:18
文章标签 骑士 旅行 ssl1456

本文主要是介绍(ssl1456)骑士旅行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

骑士旅行
Time Limit:1000MS  Memory Limit:65536K
Total Submit:263 Accepted:103

Description


在一个n m 格子的棋盘上,有一只国际象棋的骑士在棋盘的左下角 (1;1)(如图1),骑士只能根据象棋的规则进行移动,要么横向跳动一格纵向跳动两格,要么纵向跳动一格横向跳动两格。 例如, n=4,m=3 时,若骑士在格子(2;1) (如图2), 则骑士只能移入下面格子:(1;3),(3;3) 或 (4;2);对于给定正整数n,m,I,j值 (m,n<=50,I<=n,j<=m) ,你要测算出从初始位置(1;1) 到格子(i;j)最少需要多少次移动。如果不可能到达目标位置,则输出"NEVER"。 




Input


输入文件的第一行为两个整数n与m,第二行为两个整数i与j。


Output


输出文件仅包含一个整数为初始位置(1;1) 到格子(i;j)最少移动次数。


Sample Input




5 3
1 2
Sample Output




3
Source


elba




var
 dx:array[1..8]of longint;
 dy:array[1..8]of longint;
 a:array[0..50+1,0..50+1] of longint;
 father:array[1..50*50]of longint;
 state:array[1..50*50,1..3] of longint;//3用于记录步数(父节点数)
 qx,qy,n,m,s:longint;
procedure init;
begin
 readln(n,m);
 read(qx,qy);
end;
procedure bfs;
var
 head,tail,k,x,y:longint;
begin
 head:=0;tail:=1;
 state[1,1]:=1;state[1,2]:=1;state[1,3]:=0;
 father[1]:=0;
 repeat
  inc(head);
  for k:=1 to 8 do
   begin
    x:=state[head,1]+dx[k];
    y:=state[head,2]+dy[k];
    if (x>=1) and (x<=n) and (y>=1) and (y<=m) and (a[x,y]=0) then
     begin
      inc(tail);
      father[tail]:=head;
      state[tail,1]:=x;
      state[tail,2]:=y;
      a[x,y]:=1;
      state[tail,3]:=state[head,3]+1;//统计步数
      if (state[tail,1]=qx) and (state[tail,2]=qy) then
       begin
        s:=state[head,3]+1;//统计到达终点的步数
        writeln(s);
        halt;
        tail:=0;//其实这条语句不必要,在执行它之前就当机了,不过出于是广搜,暂且保留它吧
       end;
     end;
   end;
 until head>=tail;
end;
begin
 dx[1]:=-1;dx[2]:=-2;dx[3]:=-2;dx[4]:=-1;dx[5]:=1;dx[6]:=2;dx[7]:=2;dx[8]:=1;//打表
 dy[1]:=2;dy[2]:=1;dy[3]:=-1;dy[4]:=-2;dy[5]:=-2;dy[6]:=-1;dy[7]:=1;dy[8]:=2;
 init;
 bfs;
 writeln('NEVER');
end.

这篇关于(ssl1456)骑士旅行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659337

相关文章

社交平台找旅游搭子一起旅行靠谱吗?答案是不要太爽!

哈喽小伙伴们,今天要跟大家分享一个超级棒的小程序——咕哇找搭子!作为一个热爱自由行的人,最头疼的就是找不到志同道合的小伙伴。但自从用了这个咕哇小程序后,一切都变得简单又充满乐趣啦!🎉 上个月,我计划去云南旅行,就试着在咕哇上发布了我的行程信息。没想到很快就收到了几位朋友的回应,其中一位叫小莲的朋友特别投缘。我们不仅目的地一样,就连兴趣爱好都出奇地相似,于是我们就决定一起出发啦!👭

旅行商问题 | Matlab基于混合粒子群算法GA-PSO的旅行商问题TSP

目录 效果一览基本介绍建模步骤程序设计参考资料 效果一览 基本介绍 混合粒子群算法GA-PSO是一种结合了遗传算法(Genetic Algorithm, GA)和粒子群优化算法(Particle Swarm Optimization, PSO)的优化算法。在解决旅行商问题(Traveling Salesman Problem, TSP)时,这种混合算法可以结合两种算法的优点

P4842 城市旅行(拆贡献 + LCT)

https://www.luogu.com.cn/problem/P4842 发现题目就是要维护一个LCT,然后我们只要把pushup写成功了就行。 那我们现在就不管LCT了,就单纯想用一棵二叉查找树怎么维护。分母是好搞的,分子我们要想点办法。 考虑右子树对左子树的贡献,我们假设处理出一个 L [ k ] L[k] L[k] 表示左子树中每个值乘以左边界的可选数量,我们现在再乘上右子树的大

P3313 [SDOI2014] 旅行(分块做法)

~~~~~      P3313 [SDOI2014] 旅行 ~~~~~      总题单链接 思路 ~~~~~      遇到这种树上路径问题,就考虑用重链剖分转为区间问题。 ~~~~~      问题转换为了:给定一个区间和 k k k,求这个区间内信仰为 k k k 的城市的 权值和 或 最大权值。 ~~~~~      这个问题也可以用动态开点线段树解决(现在不会,以后

P2324 [SCOI2005] 骑士精神

*原题链接* T组测试数据,每组数据给定5x5的矩阵,求将其变为目标矩阵的最小步数。 做法:IDA* 分析:看到这样的数据范围和题目描述就可以想到搜索了,由于任何时候矩阵中只有一个空格,所以我们从空格开始进行搜索,看哪个骑士能转移到这个空格上。由于步数超过15步后输出-1,所以可以迭代加深搜索,但是这样爆搜后交上去会T,所以考虑如何优化。剪枝是剪不了的(至少我没想到哪里可以剪枝),既然已经是

旅行追踪和行程规划工具AdventureLog

什么是 AdventureLog ? AdventureLog 是一种记录您的旅行并与世界分享的简单方法。您可以在日志中添加照片、笔记等。跟踪您访问过的国家、探索去过的地区和地方。您还可以查看您的旅行统计数据和里程碑。AdventureLog 旨在成为您终极的旅行伴侣,帮助您记录您的冒险经历并轻松规划新的冒险经历。 主要功能: 使用姓名、日期、地点、描述和评级等字段记录过去的冒险经

PHP指尖上的旅行管家手边酒店民宿预订系统小程序源码

指尖上的旅行管家——手边酒店民宿预订系统🌟🛫 🚀 开篇:旅行新伴侣,轻松启程 每次计划旅行,是不是都曾为找酒店、订民宿而头疼不已?🤔 繁琐的搜索、对比、预订流程,让美好的旅程还没开始就有点疲惫了呢。但现在,有了“手边酒店民宿预订系统”,一切都变得不一样了!🎉 它就像是你指尖上的旅行管家,随时待命,为你打造无忧的出行体验。 📱 一键操作,全球住宿尽在掌握 只需轻轻一点,手

1570C 旅行

题目描述 Tom和Alice结婚一段时间了,感情非常好,一天他们相约去旅行,终点在遥远的地方。        地形是非常复杂的,路途是非常曲折的。但我们简化一下是一个矩阵。起点也就是他们家在矩阵的左下角,终点也就是他们要去的遥远的地方在右上角,矩阵行列的交点是他们可以驻足的地方,但是有的却是陷阱,他们是不能从那里通过的。Tom要听Alice的,只会往上或往右走,不往回走,直到终点。

重生奇迹MU敏捷流梦幻骑士

“梦幻骑士”这个职业已经存在于重生奇迹MU中很长时间了,虽然现在已经不算是新职业了,但玩家们对于梦幻骑士的研究和开发一直没有停止过。它作为一个特殊的职业,与传统职业截然不同,拥有着许多独特的玩法。其中,有一种玩法是所有平民玩家的最爱。 敏捷流是目前普遍受欢迎的幻想骑士游戏职业,尤其适合平民玩家选择。它不需要过多的资金投入,只需要将大部分升级点数分配到“敏捷”属性即可。但是,它却能带给玩家出乎意料

遗传算法与深度学习实战(8)——使用遗传算法解决旅行商问题

遗传算法与深度学习实战(8)——使用遗传算法解决旅行商问题 0. 前言1. 旅行商问题2. NP 问题3. 构建 TSP 求解器小结系列链接 0. 前言 旅行商问题 (Traveling Salesman Problem, TSP) 是一个经典的优化问题,其目标是找到一条最短的路径,使得旅行商可以访问一系列给定的城市并且每个城市只访问一次,最终回到出发地点。在本节中,我们将学习