当前位置: 首页 > news >正文

【华为OD机考】华为OD笔试真题解析(7)--基站维修工程师

题目描述

小王是一名基站维护工程师,负责某区域的基站维护。某地方有n个基站(1 < n < 10),已知各基站之间的距离s0 < s < 500),并且基站x到基站y的距离,与基站y到基站x的距离并不一定会相同。

小王从基站1出发,途径每个基站1次,然后返回基站1,需要请你为他选择一条距离最短的路径。

输入描述

第一行表示站点数,以后各行表示站点数n到各站点之间的距离(均为整数)。

3
0 2 1
1 0 2
2 1 0

输出描述

最短路径的数值。

示例描述

示例一

输入:

3
0 2 1
1 0 2
2 1 0

输出:

3

解题思路

  1. 本题采用可放回的回溯法。
  2. 由于固定从基站1开始,可设置初始路径列表为[0],路径长度和路径节点一致,使用回溯法得到所有可能的路径。
  3. 根据得到的路径,计算路径长度,得到最小路径。

解题代码

import math


def solve_method(num, paths):
    result = []
    backstracking(num, num, 1, [0], result)

    min_path = math.inf
    for path in result:
        total_path = 0
        prev = 0
        for p in path:
            # 计算路径长度
            total_path += paths[prev][p]
            prev = p

        if total_path < min_path:
            min_path = total_path
    return min_path


def backstracking(n, k, start_index, path, result):
    if len(path) == k:
        tmp = path[:]
        tmp.append(0)
        result.append(tmp)
        return

    # 采用放回的取数方式
    for i in set(range(n)).difference(set(path)):
        path.append(i)
        backstracking(n, k, i + 1, path, result)
        path.pop()


if __name__ == '__main__':
    num = 3
    paths_length = [
        [0, 2, 1],
        [1, 0, 2],
        [2, 1, 0],
    ]
    assert solve_method(num, paths_length) == 3

在这里插入图片描述

http://www.dtcms.com/a/20295.html

相关文章:

  • 【Qt】实现定期清理程序日志
  • 排序算法详解、应用对比与C语言实现
  • 【AI学习】DeepSeek-R1-Distill的意义和影响
  • 【TI C2000】F28002x的系统延时、GPIO配置及SCI(UART)串口发送、接收
  • Git命令摘录
  • C++ -- stack的模拟实现 介绍适配器模式
  • Zookeeper(45) 如何在Zookeeper中删除节点?
  • CentOS上安装WordPress
  • 在SpringBoot如何调用DeepSeek接口
  • 【Qt】模型/视图(Model/View)框架详解(一):基本概念
  • 【Axure教程】数字滚动效果
  • 深入解析LVS命令参数及DR模式下的ARP抑制原理
  • rustdesk远程桌面自建服务器
  • stl里的deque 中控map 假如用完了,该如何处理
  • C# 调用 C++ 动态库接口
  • 深入指南:在IDEA中启用和使用DeepSeek
  • 花卉图片分类实战 -- 基于预训练的 Vision Transformer 实现
  • Vue3组件通信全攻略:8种传值方式详解
  • JavaScript document.write()介绍(直接将内容写入HTML文档的早期方法,已逐渐被现代DOM操作方法取代)
  • export关键字
  • boolen盲注和时间盲注
  • 链表(C语言版)
  • LeetCode541 反转字符串2
  • CAS单点登录(第7版)19.监控和统计
  • MongoDB索引介绍
  • 位图(C语言版)
  • 自己部署DeepSeek 助力 Vue 开发:打造丝滑的标签页(Tabs)
  • pdf文件的读取,基于深度学习的方法
  • 大模型WebUI:Gradio全解12——使用Agents和Tools智能代理工具构建UI(1)
  • vue3.x 的shallowReactive 与 shallowRef 详细解读