Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)
文章目录
- 前言
- 一、最长递增区间
- 二、狄杰斯特拉(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:passdef solution(self, n, arr):result = 0# TODO: 请在此编写代码tmp = 1for i in range(n):if i+1 < n and arr[i+1] > arr[i]:tmp += 1else:result = tmp if tmp > result else resulttmp = 1return resultif __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] = tmpprev[i] = sdist[s] = 0pathed[s] = Truenode = sfor i in range(1, n+1):tmp = self.max_distfor j in range(1, n+1):if not pathed[j] and dist[j] < tmp:node = jtmp = dist[j]pathed[node] = Truefor k in range(n+1):val = arr[node][k]if not pathed[k] and val < self.max_dist:new_dist = dist[node] + valif new_dist < dist[k]:dist[k] = new_distprev[k] = noderesult = (dist[n] if dist[n] < self.max_dist else "INF")return resultif __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]这个值会不会重复,就是颜色会不会重复,如果不会重复那倒简单了,深度优先搜索就行了。如果会重复,真心不会!
总结
不总结了,太菜!不会的太多,继续好好学习去了~ 老了也要学习!
Python每日一练:最长递增区间狄杰斯特拉(80分)K树(0分)相关推荐
- Python每日一练0023
问题 如何判断一个文件是否存在 解决方案 这个问题可以分成几类问题 如果这里的文件指的是文件或目录,我们可以用os.path.exists()方法 >>> import os > ...
- Python每日一练0004
问题 如何保存迭代对象的最后N个元素 例如保存列表['a', 'b', 'c', 'd']的最后2个元素 或者保存某个迭代器对象的最后5个元素 解决方案 对于列表.元组这样的数据结构,可以使用切片来很 ...
- python 编程一日一练-python每日一练
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...
- python 编程一日一练-Python每日一练0022
问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...
- python 编程一日一练-Python每日一练0013
问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在. 解决方案 使用collections库的ChainMap类,可以快速的将多个d ...
- Python每日一练0018
问题 你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. Python的float类型是存在误差的 >>> a = 1.1 >>> b = 2.2 & ...
- python每日一练名片管理程序_Python每日一练0022
问题 你想在一个文件里每次读入固定大小的字节,比如每次读入4个字节并转成int,或者每次读入x个字节并进行结构化,例如: l = [5, 2, 4, 1, 2, 4, 5, 6, 8] with op ...
- Python每日一练第5天——将一组数尽可能均匀地分成两堆,使两个堆中的数的和尽可能相等
每日一练-做题 麦克叔叔去世了,他在遗嘱中给他的两个孙子阿贝和鲍勃留下了一堆珍贵的口袋妖怪卡片.遗嘱中唯一的方向是"尽可能均匀地分配纸牌的价值".作为Mike遗嘱的执行人,你已经为 ...
- Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词
#coding:utf-8 import os,repath = 'test' files = os.listdir(path)def count_word(words):dic = {}max = ...
最新文章
- python是如何进行内存管理的
- Android开发之Dialog的三种列表显示(解读谷歌官方API)
- Java开发环境配置——Tomcat
- 计算机英语作文句子,英语作文经典句子
- 蒙特卡洛树搜索的主要流程有哪些_海运拼箱操作流程主要有哪些
- 新概念0820:我只有一种生活
- Jquery Mobile设计Android通讯录第二章
- why jQuery.clone does not work as expected
- 前端学习(3283):立即执行函数二
- word break II 对字符串根据已知字典 分解出所有可能组合
- RiPro小八子主题V1.5.5美化版+优惠码折扣+工单系统+任务系统
- Magento 默认排序为最新 How to sort Magento products by date added as default
- Hibernate的持久化
- linux查询22窗口,22linux查询文件命令比较
- MaxScale初探
- awesome python 中文版 相见恨晚!(pythonNB的第三方资源库)
- 网络盒子android系统版本怎样刷机,【当贝市场】一键通IPTV盒刷Android系统教程
- windows注册表解析说明
- checkbox如何默认选中
- Linux进程管理与控制课后作业
热门文章
- Turbo C 2.0的下载地址
- word怎么删除参考文献的横线_word2016怎么去掉引用参考文献中的横线
- Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++
- 关于微信小程序不能显示图片
- Spring Bean的作用域之prototype
- 力扣1438——绝对差不超过限制的最长连续子数组(滑动窗口+单调队列)
- Unity PSD导入到Unity
- 习题2.9 编写程序,由键盘输入20个整数,分别炸出其中的最大正整数、最小正整数、最大负整数、最小负整数
- 无配置WCF客户端的一个简单到令人发指的实现方法
- 用C语言实现一个简单的一元线性回归算法