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

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

时间:2024-04-27 13:11:07浏览次数:30  
标签:黑色 return 白色 捕获 棋子 ok 皇后

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 main

import (
	"fmt"
)

func main() {
	a := 1
	b := 1
	c := 8
	d := 8
	e := 2
	f := 3

	result := 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 = 1
    b = 1
    c = 8
    d = 8
    e = 2
    f = 3

    result = 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 1
    return 2

def ok(l, m, r):
    return m < min(l, r) or m > max(l, r)

def min(a, b):
    if a < b:
        return a
    return b

def max(a, b):
    if a > b:
        return a
    return b

if __name__ == "__main__":
    main()

在这里插入图片描述

标签:黑色,return,白色,捕获,棋子,ok,皇后
From: https://www.cnblogs.com/moonfdd/p/18161943

相关文章

  • 洛谷八皇后问题
    洛谷八皇后问题原题链接https://www.luogu.com.cn/problem/P1219简单dfs思路,g[n]存储的是可以作为选择的列下标输出的时候记着加一(从0开始)#include<iostream>#include<cstring>usingnamespacestd;constintN=15;intn;intnum;boollie[N],duijiao[2*N......
  • 30天【代码随想录算法训练营34期】第七章 回溯算法part06 (● 332.重新安排行程 ● 51
    332.重新安排行程木有看懂,没视频所以也没看懂51.N皇后自己写出来还是有难度的classSolution:defsolveNQueens(self,n:int)->List[List[str]]:result=[]#存储最终结果的二维字符串数组chessboard=['.'*nfor_inrange(n)]#初始化......
  • 周边上新:博客园鼠标垫LOGO系列黑色简约款
    之前有用户在评论中提出想要只有博客园logo的鼠标垫,我们少量印制了一款,现已上架。这是一款小尺寸加厚鼠标垫,尺寸是300x250x5mm,照片拍不出实物的质感,实物效果比照片好。淘宝购买链接:https://item.taobao.com/item.htm?id=783000171523微店购买链接:https://weidian.com/item.htm......
  • 蓝桥杯-N皇后
    0.题目【题目描述】有一个N*N的矩阵棋盘和N个棋子,现在需要将N个棋子按要求放置在矩阵方格中。要求:1、任意两颗棋子不能在同一行2、任意两个棋子不能在同一列3、任意两个棋子不能在同一对角线上(下面的红线都是对角线)根据以上要求,问N个棋子放置到N*N矩阵中有多少种放置方案......
  • 力扣51 N皇后 Java版本
    文章目录题目描述代码题目描述按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数n,返回所有不同的n皇后问题的解决方案。每......
  • 八皇后问题(洛谷P1219)
    在做洛谷上的题前我们看一下这样一道题题目描述会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 × 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对......
  • [工具] 批量BMP图片转为PNG透明图片,去掉BMP黑色背景,去黑底,压缩导出png图片V1.1
    批量BMP图片转为PNG透明图片,去掉BMP黑色背景,压缩导出png图片V1.1前段时间上传了一款bmp转png并去黑底的demo软件,非常受欢迎,  上一版本地址:批量BMP图片转为PNG透明图片,去掉BMP黑色背景应广大爱好者的要求,完善了一下软件的功能,增加了导出png图片压缩功能,界面如下:  压......
  • 代码随想录第30天|51. N皇后
    51. N皇后51.N皇后-力扣(LeetCode)代码随想录(programmercarl.com)这就是传说中的N皇后?回溯算法安排!|LeetCode:51.N皇后_哔哩哔哩_bilibili按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在......
  • cesium 加载mapbox底图 黑色主题底图 84底图
    cesium提供MapboxStyleImageryProvider,加载mapbox的影像图层,底图是84坐标系。viewer.imageryLayers.addImageryProvider(newCesium.MapboxStyleImageryProvider({styleId:'dark-v11',accessToken:'mapbox的to......
  • 园子周边第2季:黑色大鼠标垫已上架,大气简洁与五彩缤纷的融合
    大家好,黑色款大鼠标垫今天在淘宝店与微店上架啦,欢迎瞧一瞧看一看逛一逛买一买。这是园子的第一款黑色背景鼠标垫,基于蓝色款大鼠标垫的设计,去掉了“代码改变世界”,引入了五彩缤纷的以代码为主题的星星。鼠标垫定价:¥49.00,VIP会员优惠价:¥30.00(仅限1个),PLUS会员优惠价:¥20.00(仅限1个)......