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

go · 浏览次数 : 0

小编点评

```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 } ```

正文

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()

在这里插入图片描述

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

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

2024-04-27:用go语言,在一个下标从 1 开始的 8 x 8 棋盘上,有三个棋子,分别是白色车、白色象和黑色皇后。 给定这三个棋子的位置,请计算出要捕获黑色皇后所需的最少移动次数。 需要注意的是,白色车可以垂直或水平移动,而白色象可以沿对角线移动,它们不能跳过其他棋子。 如果白色车或白色象

.NET周刊【4月第2期 2024-04-21】

国内文章 他来了他来了,.net开源智能家居之苹果HomeKit的c#原生sdk【Homekit.Net】1.0.0发布,快来打造你的私人智能家居吧 https://www.cnblogs.com/hezp/p/18142099 三合是一位不喜欢动态编程语言的开发者,对集成米家智能家居到苹果Home

不得不说,在很多业务中,这种模式用得真的很香

title: 不得不说,在很多业务中,这种模式用得真的很香 date: 2024-04-24 22:31:58 permalink: /pages/32af5c/ categories: - 《常用设计模式》笔记 tags: - 策略模式 author: name: 老猫 link: https:/

mybatisplus 中查询的实体对应的表名是动态的解决方案

开发中遇到需要查询一些表里的数据,这些数据按照一定的规则存放在不同的数据库表里,例如表名是table_name+月份 table_name_2024_05,table_name_2024_04这样,这些表的结构都相同。 网上找了一些动态修改实体对应数据库表名的方法,操作相对复杂而且跟mybatisp

win10离线安装.net3.5失败的解决方案

简介: 问题:有时候需要离线安装.net3.5环境,网上的教程一般都是通过NetFx3.cab进行离线安装,但有时候会出现离线安装失败,比如: by~MaQaQ 2024-06-04 分析: 1、先关闭防火墙及杀毒软件 2、网上下载的离线安装包的版本不一定与你电脑的系统版本一致,如果提示找不到源文件

Django国际化与本地化指南

title: Django国际化与本地化指南 date: 2024/5/12 16:51:04 updated: 2024/5/12 16:51:04 categories: 后端开发 tags: Django-i18n 本地化-L10n 多语言 国际化 翻译工具 表单验证 性能优化 引言 在数字化

深入理解高级加密标准(Advanced Encryption Standard)

title: 深入理解高级加密标准(Advanced Encryption Standard) date: 2024/4/23 20:04:36 updated: 2024/4/23 20:04:36 tags: AES概述 加密原理 优势特点 算法详解 安全性 应用实践 案例分析 第一章:AES概

炎炎夏日,清凉上线:博客园T恤丝光棉款上架预售

2024年7月开始了,炎炎夏日来了,决定园子命运的季度也到了,多一份努力,多一份收入,就多一份希望。在园子的第二十年,出一些周边,留一点记忆,本身就有一定意义,虽然有人质疑,但我们的确是诚心诚意。

2024年,AI驱动测试管理工具会有哪些发展前景呢?

随着人工智能技术的日新月异,2024年的测试管理工具将迎来全新的发展机遇。AI赋能将助力测试管理工具实现前所未有的智能化升级,为软件研发团队带来革命性的变革。 一、什么是AI? 人工智能(AI)是一种能够模仿人类智能行为的技术。它通过模拟人类大脑的功能来解决复杂问题,具有学习、推理、感知、预测等能力

2024好用的项目管理软件有哪些?这10款最火国内项目管理工具你应该知道

不管是大公司还是小公司,如果想提高企业运作效率、规范管理并且高效且实用的项目管理工具,对项目流程进行把控、及时共享工作进度,从而让工作变得更有效率。那么一款好用的项目管理工具必不可少。然而面对市场上这么多的项目管理工具,你是否感到疑惑,不知道选择哪款项目管理软件好?那么在本文中我们挑选了10款最优秀