棋盘上骑士的最短路径

2024-06-18

我一直在为即将到来的编程比赛进行练习,我偶然发现了一个我完全困惑的问题。然而,我觉得这是一个我现在应该学习的概念,而不是祈祷它永远不会出现。

基本上,它涉及棋盘上的骑士棋子。您将获得两个输入:起始位置和结束位置。目标是计算并打印骑士到达目标位置可以采取的最短路径。

我从来没有处理过最短路径式的事情,我什至不知道从哪里开始。我采用什么逻辑来解决这个问题?

附:如果有任何相关性,他们希望您通过允许骑士移动到由骑士可以进行的(可能)八个动作形成的正方形的四个角来补充骑士的正常动作,假设正方形的中心是骑士的位置。


EDIT: 参见西蒙的回答 https://stackoverflow.com/a/41704071/620438,他修正了这里提出的公式。

其实有一个O(1)的公式

This is an image that I've made to visualize it ( Squares a knight can reach on Nth move are painted with same color ). Knight's Move

你能注意到这里的模式吗?

虽然我们可以看到图案,但是要找到功能确实很难f( x , y )返回从方格开始所需的移动次数( 0 , 0 )到平方( x , y )

但这是适用于以下情况的公式:0 <= y <= x

int f( int x , int y )
{
    int delta = x - y;

    if( y > delta )
        return 2 * ( ( y - delta ) / 3 ) + delta;
    else
        return delta - 2 * ( ( delta - y ) / 4 );
}

注意:这个问题是在2007 年 SACO 第一天 http://olympiad.cs.uct.ac.za/old/saco2007/day1_2007.pdf
解决方案是here http://olympiad.cs.uct.ac.za/old/saco2007/day1_2007_solutions.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

棋盘上骑士的最短路径 的相关文章

  • 在 Rust 中,存储较大的类型更快还是存储较小的类型并始终强制转换它们更快?

    我正在用 Rust 开发一个国际象棋引擎 我有一个Move结构与from and to字段 它们是Square Square是一个包含一个结构体usize 这样我在访问该职位的棋盘元素时就可以直接使用它 因为在 Rust 中索引必须用usi
  • Python 中的二维优化(最小化)(使用 scipy.optimize)

    我正在尝试优化 最小化 二维函数E n k 定义如下 error lambda x y w math log abs Tformulated x y w math log abs Tw w 2 math atan2 Tformulated
  • 寻找特定顶点最短路径的好算法

    我正在解决下面描述的问题 并且想不出比尝试每个组的每个顶点的每个排列更好的算法 我得到了一张顶点图 以及一组特定顶点组的列表 目标是找到从特定起始顶点到特定结束顶点的最短路径 并且该路径必须从每个顶点至少经过一个顶点指定的顶点组 图中还存在
  • 健康损失的迷宫中的最短路径

    假设您有一个由 2D 矩阵表示的地下城 您有一个起点 S x1 y1 和一个终点 E x2 y2 在此过程中 一些细胞中会有一个数字 这些数字会从您的健康得分中减去 其他细胞是你无法跨越的障碍 你一开始有 5 点生命值 你需要找到从 S 到
  • 在 O(E logV) 中求图中的单调最短路径

    创意题第 34 题这一页 http algs4 cs princeton edu 44sp 单调最短路径 给定一个边加权有向图 找到一条从 s 到所有其他顶点的单调最短路径 如果路径上每条边的权重严格递增或严格递减 则路径是单调的 部分解决
  • 找到两个节点(顶点)之间的最短路径

    我有一个互连边的列表 E 如何找到从一个顶点连接到另一个顶点的最短路径 我正在考虑使用 但边缘没有明确定义的根 所以我认为该解决方案不起作用 最短路径由经过的最少顶点数定义 Note There could be a multi path
  • 如何从最小最大算法中获取实际移动而不是移动值

    我目前正在为国际象棋编写一个带有 alpha beta 剪枝的极小极大算法 从我见过的所有示例中 极小极大算法将返回一个 int 值 该值表示最佳得分或最佳移动所产生的棋盘状态 我的问题是我们如何返回与分数返回值相关的最佳动作 例如 下面的
  • 如何最小化最短路径树的总成本

    我有一个具有正边权重的有向无环图 它具有单个源和一组目标 距离源最远的顶点 我找到从源到每个目标的最短路径 其中一些路径重叠 我想要的是一个最短路径树 它可以最小化所有边上的权重总和 例如 考虑其中两个目标 假设所有边的权重相等 如果它们在
  • 点加速最快路径

    这只是我自己想出的东西 但这似乎是一个有趣的问题 它让我难住了 您在二维空间中有一组点 其中一个点指定为 起点 一个点指定为 终点 每个点都有坐标 以米为单位距原点 但也有一个 加速度数 以米 秒的 delta V 为单位 到达某个点 包括
  • 了解使用无符号位板生成滑块移动的“o^(o-2r)”公式?

    我正在尝试做什么我正在尝试执行一些按位运算来创建国际象棋引擎 为了制作这个引擎 我需要能够生成棋子的动作 比如车 有一个方便的公式 https www chessprogramming org Subtracting a Rook from
  • 如何在 BFS 图形搜索 JavaScript 中跟踪路径

    我正在研究 BFS 算法 但我很难弄清楚如何跟踪最短路径 下面是我使用过的代码 const graph 1 2 3 4 2 5 6 3 10 4 7 8 5 9 10 7 11 12 11 13 function bfs graph sta
  • 查找两个顶点之间的所有最短路径

    给定一个有向图G V E 两个顶点s t和两个权重函数w1 w2 我需要找到最短路径s to t by w2在所有最短路径之间s to t by w1 首先 我怎样才能找到两个顶点之间的所有最短路径s and t Dijkstra 算法帮助
  • 如何有效地编码/解码压缩的位置描述?

    我正在为日本象棋变体编写一个表库 为了索引表基数 我将每个国际象棋位置编码为整数 在编码步骤之一中 我对棋盘上棋子的位置进行编码 由于实际方法有点复杂 我就简单地解释一下这个问题 编码 在残局桌面中 我有 比方说 六个不同的棋子 我想将它们
  • 使用 BFS 进行加权图

    我正在修改单源最短路径算法 在视频中 老师提到BFS DFS不能直接用于查找最短路径 in a 加权图 我想每个人都知道这一点 并说自己找出原因 我想知道为什么它不能用于加权图的确切原因 解释 是由于边缘的重量还是其他原因造成的 有人可以解
  • 寻找多条短路径的算法

    寻求一种能够产生 N 条短路径的算法 有没有人有算法的经验来寻找多条短路径在有向图中 我的应用程序用于语言 查找同义词链 但从逻辑上讲 这可能用于地理或社交网络 我想要明显不同的路径 而不仅仅是沿途交换几个节点 我真的很想知道是否有办法避免
  • 找到从 A 到 B 的最短路径,同时拾取可能位于多个位置的某些物品[重复]

    这个问题在这里已经有答案了 我正在学习图形和算法 我什至很难找到此类问题的名称 更不用说提出一个好的解决方案了 如果我们只有一个未加权的无向图 那么找到从 A 到 B 的最短路径是微不足道的 BFS 如果我们必须访问某些节点 从 A 到 B
  • 使用斐波那契堆时 Dijkstra 是否更快?

    使用斐波那契堆时 Dijkstra 是否比使用二进制堆更快 我自己做了一些实现斐波那契堆的实验 并在 Dijkstra 中使用它 我还检查了 fibheap 库中现成的斐波那契堆 但没有一个实现能够更快地找到使用以下命令的最短路径 二进制堆
  • 找到一条穿过任意节点序列的最短路径?

    In 这个先前的问题 https stackoverflow com questions 7314333 find shortest path from vertex u to v passing through a vertex wOP询
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • 在Python中寻找坐标系中某些点之间的最短路径

    我编写了一个代码 可以在坐标系中的特定宽度和长度范围内生成所需数量的点 它计算并列出我使用欧几里德方法生成的这些点的距离矩阵 我的代码在这里 import pandas as pd from scipy spatial import dis

随机推荐

  • 使用多处理池更新 Django 模型会锁定数据库

    我使用 Jupyter Notebook 来处理我存储在 django postgres 中的数据 我这样初始化我的项目 sys path append srv gr prg os environ setdefault DJANGO SET
  • 从 .NET 设置系统时区

    有没有人有一些代码可以从 NET 获取 TimeZoneInfo 字段并执行互操作代码以通过 SetTimeZoneInformation 设置系统时区 我意识到它基本上是将 TimeZoneInfo 成员映射到结构成员 但对我来说 这些字
  • Swift:二元运算符“==”不能应用于“协议”类型的操作数

    我有一个协议 protocol ProfileManagerDelegete func dataHaveUpdated type ReturnType 并创建一个协议数组 并添加 删除侦听器 var listeners ProfileMan
  • 在 Jquery - jTable 创建/更新模式中的字段末尾添加自定义按钮,如提交按钮

    在 jquery jTable 中 我们可以有一些字段和操作 我需要 Jquery JTable 按钮 提交 按钮 附近的其他按钮 可能在页面末尾 单击后运行另一个函数 所以 这是我的代码 RequestSubmitDiv jtable t
  • 这是演员还是建筑?

    读完教科书上的一些内容后 我有点困惑 关于代码 void doSomeWork const Widget w Fun stuff doSomeWork Widget 15 doSomeWork 需要一个const Widget 范围 教科书
  • 如何将slug添加到asp.net core网站中的所有链接生成中?

    我需要能够控制我的生成的链接Url Content 调用以能够在链接的开头接受 Slug 基本上 托管 URL 将位于负载平衡器后面 并且可能位于根级别或位于更友好的 Url 后面 举个例子 该站点配置为在以下环境下运行http 本地主机
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • 如何外部化 json-ld 并包含在 html 文档中

    是否可以外部化 json ld 并将其包含在 html 文档中 如下所示 网上好像没有这方面的文档 你不能那样做 你应该得到json与AJAX要求 你可以轻松做到jQuery JS function getJSON data123 json
  • 使用函数和中点在 C++ 中对 Gusser 进行编号

    我正在尝试使用函数编写数字猜测器的代码 playOneGame 函数的返回类型应为 void 它应该在 1 到 100 的范围内实现一个完整的猜谜游戏 shouldPlayAgain 函数应具有布尔返回类型 它应该提示用户确定是否要再次玩
  • 在 Jenkins Pipeline 的一个步骤中添加多个阶段

    我正在尝试获得一个并行运行 2 个步骤的管道 其中 YAML 如下所示 steps step Step1 stages stage Build steps build a build b build c stage Sniff steps
  • 设置img src而不发出请求

    作为构建复制和粘贴代码的一部分 我们必须使用 dom 元素 并将文本 其他 dom 元素附加到其中 最终结果将是要复制的代码 但是 当附加图像元素时 浏览器always发出对图像 src 的请求 有什么办法解决吗 i e var img d
  • 如何在没有接口的情况下模拟多重继承?

    如何在不使用接口的情况下在 C 中模拟多重继承 我确实相信 接口能力不适用于此任务 我正在寻找更多面向 设计模式 的方式 就像 Marcus 所说 使用接口 扩展方法来制作像 mixins 这样的东西可能是你目前最好的选择 另请参阅 使用接
  • 在 bash 脚本中使用源时出现“源:未找到”错误

    我正在尝试编写 我认为的 一个简单的 bash 脚本 它将 运行 virtualenv 以 1 美元创建一个新环境 激活虚拟环境 做更多的事情 安装 django 将 django admin py 添加到 virtualenv 的路径等
  • Elastic Search 6 嵌套查询聚合

    我是弹性搜索查询和聚合的新手 我有一个带有以下映射的嵌套文档 PUT company mappings data properties deptId type keyword deptName type keyword employee t
  • 如何更改ggplot2中x轴和y轴的位置

    在我的真实研究世界中 在顶部 或顶部和底部 显示 x 轴 在右侧显示 y 轴是很常见的 然而 ggplot2 中的默认位置是 x 位于底部 y 位于左侧 下列的科斯克在这里发帖 https groups google com forum f
  • 为除 admin 之外的所有用户禁用管理栏

    我已经安装了 WordPress 和 BudyPress 我想禁用所有用户顶部显示的管理栏 有人可以告诉我如何正确地做到这一点吗 function is current user administrator global current u
  • Xamarin Android:检测设备当前是否正在播放音频

    在应用程序启动时 是否可以检测设备的音频播放器或其他应用程序当前是否正在播放音乐 您可以使用AudioManager http developer android com reference android media AudioManag
  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • 在 Visual Studio 2010 中使用自定义 UI 编辑器注册自定义文件类型

    我发现旧文章叫做立即学习VSX和一部分 30 Visual Studio 中的自定义编辑器 http dotneteers net blogs divedeeper archive 2008 09 01 LearnVSXNowPart30
  • 棋盘上骑士的最短路径

    我一直在为即将到来的编程比赛进行练习 我偶然发现了一个我完全困惑的问题 然而 我觉得这是一个我现在应该学习的概念 而不是祈祷它永远不会出现 基本上 它涉及棋盘上的骑士棋子 您将获得两个输入 起始位置和结束位置 目标是计算并打印骑士到达目标位