2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意

news/2024/5/9 0:09:17

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。

给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。

需要注意的是,白色车可以垂直或水平移动,而白色象可以沿对角线移动,它们不能跳过其他棋子。

如果白色车或白色象可以移动到黑色皇后的位置上,即认为它们能够捕获黑色皇后。

请注意,黑色皇后自身不能进行移动。

输入:a = 1, b = 1, c = 8, d = 8, e = 2, f = 3。

输出:2。

答案2024-04-27:

chatgpt

题目来自leetcode3001。

大体步骤如下:

1.首先,我们定义了棋盘的大小为8x8,使用下标从1开始计数。

2.给定了三个棋子的位置:白色车的位置是(a, b),白色象的位置是(c, d),黑色皇后的位置是(e, f)。

3.我们需要计算出将黑色皇后捕获所需的最少移动次数。

4.首先,我们检查白色车是否能够捕获黑色皇后。白色车可以在垂直方向(同一列)或水平方向(同一行)上移动。如果白色车的行号(a)等于黑色皇后的行号(e),并且它们不在同一列(c != e),或者列号(b)等于黑色皇后的列号(f),并且它们不在同一行(d != f),则白色车可以捕获黑色皇后。这种情况下,返回移动次数1。

5.如果白色车不能捕获黑色皇后,则继续检查白色象是否能够捕获黑色皇后。白色象可以沿对角线移动。首先判断两个位置(c, d)和(e, f)是否在同一条对角线上。如果它们在同一条对角线上,那么判断白色象是否能够捕获黑色皇后取决于两个条件:一是白色象的行号(c)和列号(d)之差的绝对值等于黑色皇后的行号(e)和列号(f)之差的绝对值,二是白色象所经过的格子上没有其他棋子。如果满足这两个条件,则白色象可以捕获黑色皇后。这种情况下,返回移动次数1。

6.如果白色车和白色象都不能捕获黑色皇后,则返回移动次数2,表示无法捕获。

7.最后,根据输入的位置计算出结果为2。

时间复杂度为O(1),因为只有一组输入,没有循环或递归操作。

额外空间复杂度为O(1),因为只使用了固定数量的变量来存储输入和中间结果。

Go完整代码如下:

package mainimport ("fmt"
)func main() {a := 1b := 1c := 8d := 8e := 2f := 3result := minMovesToCaptureTheQueen(a, b, c, d, e, f)fmt.Println(result)
}func minMovesToCaptureTheQueen(a, b, c, d, e, f int) int {if a == e && (c != e || ok(b, d, f)) ||b == f && (d != f || ok(a, c, e)) ||c+d == e+f && (a+b != e+f || ok(c, a, e)) ||c-d == e-f && (a-b != e-f || ok(c, a, e)) {return 1}return 2
}func ok(l, m, r int) bool {return m < min(l, r) || m > max(l, r)
}func min(a, b int) int {if a < b {return a}return b
}func max(a, b int) int {if a > b {return a}return b
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-def main():a = 1b = 1c = 8d = 8e = 2f = 3result = min_moves_to_capture_the_queen(a, b, c, d, e, f)print(result)def min_moves_to_capture_the_queen(a, b, c, d, e, f):if a == e and (c != e or ok(b, d, f)) or \b == f and (d != f or ok(a, c, e)) or \c+d == e+f and (a+b != e+f or ok(c, a, e)) or \c-d == e-f and (a-b != e-f or ok(c, a, e)):return 1return 2def ok(l, m, r):return m < min(l, r) or m > max(l, r)def min(a, b):if a < b:return areturn bdef max(a, b):if a > b:return areturn bif __name__ == "__main__":main()

在这里插入图片描述

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

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

相关文章

Abaqus压电材料分析

404Abaqus-Material: Piezoelectric behavior 压电本构方程:压电材料行为定义所需:密度(optional) 线弹性-刚度矩阵(S_ijkl or D_ijkl) Piezoelectric-压电应变常数矩阵 Dielectric(electric permittivity)-介电常数矩阵压电材料的主要特性参数压电常数: 压电常数是衡量材料压电…

力扣-54. 螺旋矩阵

1.题目 题目地址(54. 螺旋矩阵 - 力扣(LeetCode)) https://leetcode.cn/problems/spiral-matrix/ 题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]…

ROS学习--添加依赖相关问题

在自定义话题接口时,步骤如下:新建msg文件夹,并在文件夹下新建xxx.msg 在xxx.msg下编写消息内容并保存 在CmakeLists.txt添加依赖和msg文件目录 在package.xml中添加xxx.msg所需的依赖 编译功能包即可生成python与c++头文件其中在CmakeLists.txt中添加依赖和msg文件目录时需…

卡诺图学习

目录1、最小项2、最小项与卡诺图之间转换卡诺图根据最小项填写卡诺图根据逻辑函数填写卡诺图3、卡诺图化简方法 1、最小项逻辑函数表达式可以使用其最小项相加来表示最小项的定义 一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出…

ESP32引脚笔记

ESP32引脚笔记 ESP32建议使用的引脚 可参考下图Euno开发板引脚模拟输入可采用: 32、33、34、35、36、39 数字输出可采用: 上图右侧引脚 SPI : mosi-23, miso-19, clk-18, cs-5 IIC: scl-22, sda-21仅输入引脚 GPIO34~39是GPIs–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。…

pip成功安装gdal的whl文件后,PyCharm仍报错No module named ‘osgeo’

在根据网上的教程,成功pip install 对应的whl文件后,发现PyCharm仍然显示无法调用osgeo。 出现这样的问题,首先关注自己使用的环境,例如我使用的环境是(见下图)但当我打算卸载gdal库后,发现gdal安装的环境地址和我使用的环境地址不同(如下图)啊,原来是安装gdal的环境…

计算机Windows系统优化小知识

本文涉及计算机Windows系统优化小知识,介绍了注册表、虚拟内存、常用优化工具目录目录什么是注册表优化优化工具什么是注册表注册表是保存所有系统设置数据的存储器。注册表保存了 Windows 运行所需的各种参数和设置,以及应用程序相关的所有信息。从 Windows启动开始,到用户…

CUDA和CUDNN版本切换

介绍了cuda和cudnn版本切换的方法,以及设置环境变量的坑0 背景 在用不同框架做深度学习时,难免会遇到需要不同版本的cuda和cudnn版本的情况,如果把原来版本的卸载掉重新安装新版本,则会影响其它框架的使用,最好的方法是在主机上安装多个版本的cuda和cudnn,需要用到哪种就…