Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)

news2024/11/17 23:49:05

文章目录

  • 前言
  • 一、最长递增区间
  • 二、狄杰斯特拉(80)
  • 三、K树(0)
  • 总结


前言

很显然,Python的受众远远大于C++,其实笔者本人对Python的理解也是远强于C++的,C++纯粹是为了假装笔者是个职业选手才随便玩玩的,借着十多年前学的C的功底,强行假装的。
因职业原因,Python更适用于运维、网络、AI方向,所以用得很多。最近假装职业码农装过头了,写点Python代码都习惯性加 ; 了,更离谱的是CSDN对笔者的能力判断中,C++一个劲地涨,Python都连能力都没了…
所以以后也要用Python来解解题,经常锻炼一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、最长递增区间

题目描述:
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3。(测试用例仅做参考,我们会根据代码质量进行评分)

输入描述:
第一行输入整数n。 第二行输入n个整数。

输出描述:
输出最长递增的区间长度。

示例:
输入
6
5 2 3 8 1 9

输出
3

在这里插入图片描述

代码如下(示例):

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, n, arr):
        result = 0
        # TODO: 请在此编写代码
        tmp = 1
        for i in range(n):
            if i+1 < n and arr[i+1] > arr[i]:
                tmp += 1
            else:
                result = tmp if tmp > result else result
                tmp = 1

        return result

if __name__ == "__main__":

    n = int(input().strip())
    
    arr = [int(item) for item in input().strip().split()]
    
    sol = Solution()
    result = sol.solution(n, arr)

    print(result)

非常简单,没什么好解释的,C++也做过。一样的思路。result = tmp if tmp > result else result这行是if… else的省略写法。

二、狄杰斯特拉(80)

先申明:我也只解出80分。这题明显有点问题,示例都是错的,不能不让我怀疑测试数据是不是也有问题。我遇到好几次了,python和C++都没解出来100,当然思路是一样的。有看到满分的请给我个链接,去学习一下。先谢!

在这里插入图片描述

代码如下(示例):

class Solution:
    def __init__(self) -> None:
        self.max_dist = int(2e10)

    def solution(self, n, m, s, vector):
        result = self.max_dist

        # TODO: 请在此编写代码
        arr = [[self.max_dist for _ in range(n+1)] for _ in range(n+1)]
        for v in vector:
            arr[int(v[0])][int(v[1])] = int(v[2])
        pathed = [False for _ in range(n+1)]
        dist = [self.max_dist for _ in range(n+1)]
        prev = [-1 for _ in range(n+1)]

        for i in range(1, n+1):
            tmp = arr[s][i]
            if tmp < self.max_dist:
                dist[i] = tmp
                prev[i] = s

        dist[s] = 0
        pathed[s] = True
        node = s
        for i in range(1, n+1):
            tmp = self.max_dist
            for j in range(1, n+1):
                if not pathed[j] and dist[j] < tmp:
                    node = j
                    tmp = dist[j]
            pathed[node] = True

            for k in range(n+1):
                val = arr[node][k]
                if not pathed[k] and val < self.max_dist:
                    new_dist = dist[node] + val
                    if new_dist < dist[k]:
                        dist[k] = new_dist
                        prev[k] = node
                        
        result = (dist[n] if dist[n] < self.max_dist else "INF")

        return result

if __name__ == "__main__":
    
    arr_temp = [int(item) for item in input().strip().split()]
    
    n = int(arr_temp[0])
    m = int(arr_temp[1])
    s = int(arr_temp[2])
    
    vector = []
    for i in range(m):
        vector.append([int(item) for item in input().strip().split()])   
    
    sol = Solution()
    result = sol.solution(n, m, s, vector)

    print(result)

反正没全通过,就不解释了,也不写C++版本的详解了。等我搞明白了再来改吧~嗯代码也有点长,懒得解释。

三、K树(0)

题目描述:
存在一棵包含n个节点的树。 每个节点都存在自己的颜色编号col[i]。 当两个相邻的节点a,b合并成一种a或者b时花费为col[a]+col[b]。 当我们将所有的节点都变为同一种颜色时,最小花费是?

输入描述:
第一行输入一个整数n。(1<=n<=1e6) 第二行输入节点的颜色编号 以下n-1行描述n条边.保证是节点连接成树。

输出描述:
输出最长递增的区间长度。

示例:
输入
6
5 2 3 8 1 9

输出
3

不会!
嗯,不是我不会k树(Kruskal最小生成树),深度优先搜索(Depth First Search)也是会的。这题有严重的问题,根本没给出col[i]参数!
而且就算给出参数我也不会,这应该不光是深度搜索的问题,Dijkstra才算中等难度,深度优先搜索在图论算法中,是一个级别的。题目描述问题有几个:
1、缺少col[i] 参数
2、如果有col[i],col[i]这个值会不会重复,就是颜色会不会重复,如果不会重复那倒简单了,深度优先搜索就行了。如果会重复,真心不会!


总结

不总结了,太菜!不会的太多,继续好好学习去了~ 老了也要学习!

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

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

相关文章

java基础入门-04

Java基础入门-04 11、集合&学生管理系统11.1.ArrayList集合和数组的优势对比&#xff1a;11.1.1 ArrayList类概述11.1.2 ArrayList类常用方法11.1.2.1 构造方法11.1.2.2 成员方法11.1.2.3 示例代码 11.1.3 ArrayList存储字符串并遍历11.1.3.1 案例需求11.1.3.2 代码实现 11…

基于野火F407骄阳开发板的苹果采摘机器人机械臂的采摘轨迹与夹持器的采摘动作的设计(1)

基于野火F407骄阳开发板的苹果采摘机器人机械臂的采摘轨迹与夹持器的采摘动作的设计&#xff08;1&#xff09; 苹果采摘机器人1、采摘流程与硬件设计2、机械臂驱动以及采摘轨迹设计2.1、台达A2电机驱动实现2.2、机械臂寻找苹果巡逻轨迹 苹果采摘机器人 1、采摘流程与硬件设计…

fio 使用碰到的坑,一些不常用,但可能用到的参数(校验 跳跃 多线程)

1&#xff0c; 祼盘读写 一个分区 -filename/dev/sdb1 同时测试多个分区 -filename/dev/sdb1;/dev/sdb2 比例&#xff1a; fio -filename/dev/sdb1 -direct1 -iodepth 1 -thread -rwrandread -ioenginepsync -bs4k -size50G -numjobs10 -runtime1000 -group_reporting -nam…

es6的语法糖,展开运算符,类的实现

1.0 ES6语法糖 [重点] 1.1数组的解构赋值 // 声明多个变量 let [a,b,c] [1,2,3] ​ let a1&#xff0c;b2&#xff1b; // 交换数值 [a,b] [b,a] ​2 1.12 函数的参数结构 1.2对象的解构 对象存在键值对&#xff0c;如果需要解构对象&#xff0c;你需要使用对象的键名为变量…

Flask 知识点整理

文章目录 1.URL与视图的映射带参数的url&#xff1a;将参数固定到了path中查询字符串的方式传参 2.模板渲染给html文件传参 3.模板访问对象属性User 是个类User是个字典 4.过滤器的使用通过一个 | 管道符进行过滤自定义过滤器 5.控制语句iffor 1.URL与视图的映射 带参数的url&…

IIC总线简介

IIC总线 IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线 主要用于近距离、低速的芯片之间的通信&#xff1b;IIC总线有两根双向的信号线一根数据线SDA用于收发数据&#xff0c;一根时钟线SCL用于通信双方时钟的同步&#xff1b;IIC总线硬件结构简单&#xff0c;成…

第9章 项目成本管理

文章目录 9.1.1 成本与成本管理概念 329项目成本管理的过程 9.1.2 相关术语 331成本的类型&#xff08;6种&#xff09;应急储备与管理储备 9.2.3 项目成本管理计划制订的 输出 3349.3.1 项目成本估算的主要相关因素 335项目估算还需要考虑但 容易被忽视的 主要因素 9.3.2 项目…

贪心 题目集

任务安排问题 某个系统中有一个设备&#xff0c;该设备每次只能分配给一个任务使用&#xff0c;且只有当任务结束后才能再分配给另一个任务使用。 假设系统启动时间计为时间0点&#xff0c;预先有一份任务计划表&#xff0c;预定了每个任务的开始时间点和持续时间。 要求设计算…

[大二下]手把手1小时下载Pandoc

老规矩先给各位友友们提供参考解决方法,再说为啥是怎么和这哥们结缘的~ 为了能更加详细,小卓又卸载了重装了一遍!!! 所以麻烦各位佬, 能给个赞, 谢谢各位佬了,坦诚的说,因为友友们免费的点赞收藏,却是我写下去的动力~ 第一步:进入官网(如果没有科学上网的可能比较慢, 如果真的…

腾讯云 Ubuntu Desktop 22.04 桌面版

安装 Ubuntu Server 22.04 安装 Ubuntu Server 22.04重置登陆密码&#xff0c; 默认用户名 ubuntu 添加用户 不建议直接使用默认用户&#xff0c; 添加用户&#xff08;demodeom&#xff09; sudo adduser demodeom将 demodeom 添加到 sudoer 文件 sudo visudo在文件末尾添…

2023五一赶制个人系统:基于SpringBoot+MyBatisPlus+Vue+ElementUI前后端分离

小钊记前言 &#x1f351;一、背景&#x1f351;二、调研准备阶段&#x1f34a;2.1、项目-自己搭建&#x1f353; 搭建步骤 &#x1f34a;2.2、项目需求-自己X造&#x1f34a;2.2、数据模型设计 &#x1f351;三、开发阶段&#x1f351;四、renxiaozhao 1.0.0-alpha发布&#x…

BPMN2.0 任务-服务任务

服务任务是任务的一种,工作由软件自动完成,比如一个Web服务或者一个自动化的应用。 服务任务用于调用服务。 在flowable中分为java服务任务,用于调用java类,web服务任务用于同步的调用外部的web服务。 在Camunda是通过调用java代码或者为外部执行者提供一个工作单元来完…

真题详解(ICMP)-软件设计(六十五)

真题详解&#xff08;对象&#xff09;-软件设计&#xff08;六十四)https://blog.csdn.net/ke1ying/article/details/130459425 程序的三种基本控制结构&#xff1a;顺序、选择和重复。 在网络系统中&#xff0c;通常吧_____置于DMZ区。 答案&#xff1a;Web服务器 解析&am…

STL常用梳理——VECTOR常用接口及其迭代器实现

Vector篇 Vector介绍Vector实现1、定义默认构造函数使用实现 2、迭代器Iterator迭代器使用 3、空间增长问题使用实现 迭代器迭代器介绍迭代器实现 Vector介绍 vector是STL中容器之一&#xff0c;特性如下&#xff1a; vector是表示可变大小数组的序列容器。就像数组一样&#…

【python入门篇】你好python

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; Python入门&#xff0c;本专栏主要内容为Python的基础语法&#xff0c;Python中的选择循环语句…

软件测试实战,Web测试详细总结 (覆盖所有测试点),你要的都有

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Web自动化测试&…

Python 将 PDF 转换为 Word

大家好&#xff0c;我是水滴~ 在平时的工作中&#xff0c;我们总会希望将需要的 PDF 文件转换为 Word 文件&#xff0c;而市面上很多工具都是收费的&#xff0c;这无疑增加了我们的成本。 所以&#xff0c;我使用 Python 编写了一个转换代码&#xff0c;可以 将 PDF 转换为 W…

从远程桌面客户端提取明文凭证的工具RdpThief

导语&#xff1a;在本文中&#xff0c;我将描述我编写的一个工具&#xff0c;能使用API钩子从Microsoft RDP客户端提取明文凭据&#xff0c;而且如果是在已经受感染用户的权限下操作&#xff08;比如网络钓鱼导致&#xff09;&#xff0c;并且该用户已打开RDP会话&#xff0c;则…

elasticsearch 使用 RestAPI 操作索引库

1.mysql与elasticsearch 我们统一的把mysql与elasticsearch的概念做一下对比&#xff1a; MySQLElasticsearch说明TableIndex索引(index)&#xff0c;就是文档的集合&#xff0c;类似数据库的表(table)RowDocument文档&#xff08;Document&#xff09;&#xff0c;就是一条条…

如何从0到1落地自动化测试?何为成熟模型?测试老鸟的总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 过去十年&#xf…