左孩子右兄弟路径之谜

news2024/11/23 8:15:23

题目

对于一棵多叉树,我们可以通过 “左孩子右兄弟” 表示法,将其转化成一棵二叉树。

如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。

换句话说,每个结点可以选任意子结点作为左孩子,并按任意顺序连接右兄弟。

给定一棵包含 N​​ 个结点的多叉树,结点从 1​​ 至 N​ 编号,其中 1 号结点是根,每个结点的父结点的编号比自己的编号小。

请你计算其通过 “左孩子右兄弟” 表示法转化成的二叉树,高度最高是多少。

注:只有根结点这一个结点的树高度为 0​。

思路

最开始还以为是数学规律,看题解发现是去深度遍历每个节点的深度。每一层的节点存储在一个数组里面,由于使用左孩子右兄弟的表示法,则最高的高 = 该节点的孩子节点个数 + 孩子节点中最高的深度 

代码

import os
import sys
sys.setrecursionlimit(100000) #设置最深递归深度
# 请在此输入您的代码
N = int(input())
nodes = [[] for i in range(N+1)]
for i in range(2, N + 1): # 存储2​ 至 N 号结点的父结点编号
  j = int(input())
  nodes[j].append(i)

def dfs(i):
  if nodes[i] is None: #该层节点为空 即没有深度 返回0
    return 0
  
  maxn = 0
  for j in nodes[i]:#遍历第i层子节点的深度
    maxn = max(maxn, dfs(j))

  deep = maxn
  return len(nodes[i]) + deep # 第i层的子节点(每一个子节点变成二叉树都是一层高度) + 子节点中最深的深度

print(dfs(1))

题目

小明冒充 X 星球的骑士,进入了一个奇怪的城堡。

城堡里边什么都没有,只有方形石头铺成的地面。

假设城堡地面是 n×n 个方格。如下图所示。

 

按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着走,也不能跳跃。每走到一个新方格,就要向正北方和正西方各射一箭。(城堡的西墙和北墙内各有 n 个靶子)同一个方格只允许经过一次。但不必走完所有的方格。如果只给出靶子上箭的数目,你能推断出骑士的行走路线吗?有时是可以的,比如上图中的例子。

本题的要求就是已知箭靶数字,求骑士的行走路径(测试数据保证路径唯一)

思路

 使用dfs,多了一个判断西边和北边靶子上箭数目的条件。但是我还是不会写dfs,去查了题解,这个写得很清楚——>https://alex007.blog.csdn.net/article/details/90314923​​​​​​

有一个测试用例没有通过,超时了。 

代码 

import os
import sys

# 请在此输入您的代码
def dfs(r, c):
    """
    Args:
        r: 当前搜索行
        c: 当前搜索列
    Returns: Bool值,表示是否找到了一条符合条件路径
    """
    if r == n - 1 and c == n - 1: # 到达右下角
        if sum(north_target) > 0 or sum(west_target) > 0:  # 如果最后还有箭靶上面的数目不为零,也不符合要求
            return False
        path.append(r * n + c)
        print(' '.join(map(str, path)))
        return True

    path.append(r * n + c)
    direction = [(0, 1), (1, 0), (0, -1), (-1, 0)]
    for dr, dc in direction:
        nr, nc = r + dr, c + dc  # 下一个搜索位置的行、列

        # 保证下一个搜索的位置符合要求
        if -1 < nr < n and -1 < nc < n and not visit[nr][nc] and north_target[nc] > 0 and west_target[nr] > 0:
            visit[nr][nc] = True
            north_target[nc] -= 1
            west_target[nr] -= 1

            if dfs(nr, nc):
                return True
            else: #该路径走不通 则撤销刚才的操作 标记该点未被访问 靶数分别+1 路径将该点删除
                visit[nr][nc] = False
                north_target[nc] += 1
                west_target[nr] += 1

    path.pop()
    return False


if __name__ == '__main__':
    n = int(input())
    north_target = list(map(int, input().split()))
    west_target = list(map(int, input().split()))

    path = []
    visit = [[False] * n for _ in range(n)]  # 标记该点是否被访问过

    visit[0][0] = True
    north_target[0] -= 1
    west_target[0] -= 1
    dfs(0, 0)

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

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

相关文章

开源版社区团购系统源码 含小程序完整前后端+搭建教程+私有化部署

分享一个社区团购系统源码&#xff0c;源码开源可自由二开&#xff0c;含小程序完整前后端和详细的搭建教程&#xff0c;可私有化部署终身使用&#xff0c;功能界面diy团长供应商拼团秒杀优惠券菜谱积分群接龙充值预售配送等功能。 系统功能一览&#xff1a; 1、商品&#xf…

企业级应用:检测服务是否正常运行

1.说明&#xff1a; 在公司日常小项目中&#xff0c;会遇到一些小需求&#xff0c;比如&#xff1a;检测服务是否正常运行。 当一个经验不是很足的项目经理&#xff0c;让你写一个接口&#xff0c;然后检测服务是否正常运行啦。 然后你说阿里云有自动检测的接口&#xff0c;…

一文说明ROS中URDF和SRDF分别是什么

文章目录 前言一、功能作用说明URDFSRDF 二、样例文件说明URDF文件例子SRDF文件例子 总结 前言 URDF全称为Unified Robot Description Format&#xff0c;中文可以翻译为“统一机器人描述格式”。与计算机文件中的.txt文本格式、.jpg图像格式等类似&#xff0c;URDF是一种基于…

浅谈TCP IP协议(二)IP地址

上一节大致了解TCP/IP协议栈是个啥东西&#xff0c;依旧是雾里看花的状态&#xff0c;有很多时候学一门新知识时&#xff0c;开头总是很急躁&#xff0c;无从下手&#xff0c;刚学会一点儿&#xff0c;却发现连点皮毛都不算&#xff0c;成就感太低&#xff0c;所以任何时候学习…

JavaScript 中的 Window.open() 用法详解

文章目录 1 方法介绍2 参数说明3 使用示例3.1 当前窗口中打开网页3.2 新窗口中打开网页3.3 在独立窗口中打开一个指定大小和位置的网页 1 方法介绍 window.open() 方法是 JavaScript 中的一个内置方法&#xff0c;用于在浏览器中打开一个新的窗口或标签页。 这个方法的语法是…

《五》 Git 中的标签和分支

标签 tag&#xff1a; Git 可以给仓库中某一次 commit 的提交打上标签。对于重大的版本经常会打上一个标签来表示它的重要性。 创建标签&#xff1a; git tag【tag 名称】&#xff1a;创建标签。 查看标签&#xff1a; git tag&#xff1a;查看标签。 推送标签到远程仓库…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月30日论文合集)

文章目录 一、检测相关(16篇)1.1 Contextual Object Detection with Multimodal Large Language Models1.2 Towards minimizing efforts for Morphing Attacks -- Deep embeddings for morphing pair selection and improved Morphing Attack Detection1.3 Mining Negative Tem…

Pytorch CIFAR10图像分类 ShuffleNet篇

Pytorch CIFAR10图像分类 ShuffleNet篇 文章目录 Pytorch CIFAR10图像分类 ShuffleNet篇4. 定义网络&#xff08;ShuffleNet&#xff09;Channel Shuffle网络单元 Shuffle UnitShuffleNet 网络结构summary查看网络测试和定义网络 5. 定义损失函数和优化器6. 训练及可视化&#…

「教程」微信小程序获取经纬度查询天气预警信息

使用天气预警API 可以帮助人们及时获取和了解天气预警信息&#xff0c;以便采取相应的措施来保护自身和财产。天气预警通常是由气象部门或相关机构发布的&#xff0c;用于提醒公众可能出现的极端天气或自然灾害&#xff0c;如暴雨、洪水、台风、暴风雪、雷暴、高温、低温、霜冻…

LNMT架构之LNMT与nginx动静分离

LNMT架构之LNMT与nginx动静分离 目录 一、实验前提环境配置 &#xff08;一&#xff09;关闭防火墙&#xff0c;安装本地yum &#xff08;二&#xff09;部署tomcat &#xff08;三&#xff09;部署Mariadb &#xff08;四&#xff09;部署nginx 二、动静分离 步骤一&a…

Django实现接口自动化平台(二)认证授权【持续更新中】

上一章&#xff1a; Django实现接口自动化平台&#xff08;一&#xff09;日志功能【持续更新中】_做测试的喵酱的博客-CSDN博客 下一章&#xff1a; 一、认证与授权配置 1、认证&#xff1a;获取权限的方式 2、授权&#xff1a;通过认证之后&#xff0c;可以获取哪些权限 …

【大数据分析】Hbase的基本原理

目录 Hbase 架构ClientZooKeeperMasterRegionServerHRegionStoreMemStoreStoreFileHFileHLog Hbase数据模型关于数据模型的其他概念Name SpaceTableRowColumnTime StampCell Hbase 架构 Client &#xff08;1&#xff09;.META.表&#xff0c;记录了用户所有表拆分出来的 Regi…

ESP32设备驱动-TMP006 红外热电堆传感器驱动

TMP006 红外热电堆传感器驱动 文章目录 TMP006 红外热电堆传感器驱动1、TMP006介绍2、硬件准备3、软件准备4、驱动实现1、TMP006介绍 Texas Instruments 的 TMP006 是一系列温度传感器中的第一款,无需接触物体即可测量物体的温度。 它使用非常灵敏的热电堆来测量从物体表面发…

怎么给视频配音?视频配音软件有哪些?

视频配音在日常生活中被广泛应用&#xff0c;比如在电影解说、游戏解说、纪录片视频等领域&#xff0c;可以帮助创作者更好地表达自己的视频内容&#xff0c;提高视频的吸引力和感染力。很多小伙伴也想学习怎么给视频配音&#xff0c;但不清楚视频配音教程哪个好&#xff1f;没…

解密服务性能利器:Pyroscope让你的应用飞起来

开发人员通常需要查看生产应用程序中的性能瓶颈以确定问题的原因。为此&#xff0c;您通常需要可以通过日志和代码工具收集的信息。不幸的是&#xff0c;这种方法通常耗时&#xff0c;并且不能提供有关潜在问题的足够详细信息。 一种现代且更先进的方法是应用和使用分析技术和工…

Camunda如何利于性能指标优化流程性能

Camunda 提供了一系列性能指标&#xff0c;以帮助用户评估和优化其业务流程的性能。以下是 Camunda 提供的一些常见性能指标&#xff1a; 1、流程执行时间&#xff08;Process Execution Time&#xff09;&#xff1a;指从流程实例启动到完成的时间。 2、流程实例数&#xff…

共同成长 合力致远,就在2023亚马逊云科技合作伙伴峰会

在云计算蓬勃发展的今天&#xff0c;在推动业务发展、实现共赢的过程中&#xff0c;价值成就&#xff0c;是亚马逊云科技对合作伙伴自始至终的承诺。为助力合作伙伴成就价值&#xff0c;共建成长路径&#xff0c;2023亚马逊云科技合作伙伴峰会将于6月27日在上海世博中心重磅启幕…

好选客浅谈鞋靴行业找外贸客户~

鞋靴概述 鞋靴制品是指使用各种材料&#xff08;如&#xff1a;皮革、布料、橡胶、塑料等&#xff09;制作的款式、类型、功能各异的鞋子和靴子&#xff0c;包括日常通勤的休闲鞋、提供舒适的缓震和支撑的运动鞋与适用于正式场合的皮鞋和高跟鞋等&#xff0c;在保护脚部、提供…

Ubuntu18.04安装Autoware.ai 1.14 GPU版

硬件&#xff1a; CPU&#xff1a;i7-9700 显卡&#xff1a;GTX 1050 Ti 1-安装ROS 2-安装显卡驱动 1-删除旧版显卡驱动 sudo apt-get remove --purge nvidia*2-查看可供安装的驱动 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get …

期货黄金交易平台哪个最可靠?如何选择?

在期货黄金交易中&#xff0c;期货黄金交易平台是否可靠&#xff1f;如何才能快速筛选出可靠的黄金交易平台&#xff1f;对投资者来说都是很重要的。 期货黄金交易平台要保障用户资金安全 资金的安全性方面要求平台受到严格监管&#xff0c;最好是受多国监管的&#xff0c;这样…