梅花桩_动态规划(Python)

Redraiment的走法

http://www.nowcoder.com/questionTerminal/24e6243b9f0446b081b1d6d32f2aa3aa

关于初始化

数组 dp 中存储着对应 nums 位置的桩最大次数,所以创建的时候默认为 1,因为当前桩本身就是一步。

关于状态转移方程

其中 nums[j] < nums[i],即扫描 i 前面的桩,如果有比 i 小的话就使用状态转移方程 dp[i] = max(dp[i], dp[j] + 1),方程的意思是————如果前面某个桩(桩j)比 桩i 小,那么从那个桩踩上 桩i 的话自然就多了一步,我们拿这个踩完之后的步数 dp[j] + 1 跟当前存储的最大步数 dp[i] 比较一下,选个大的放进去。

while True:
    try:
        n, nums = int(input()), list(map(int, input().split()))
        dp = [1] * n
        for i in range(n):
            for j in range(i):
                if nums[j] < nums[i]:
                    dp[i] = max(dp[i], dp[j] + 1)
        print(max(dp))
    except:
        break
全部评论
好像最后得出的dp里每个位置最大步数和实际对不上吧
1 回复 分享
发布于 2022-07-21 15:47
聪明,终点桩往前踩,比另一个往后踩的好理解多了。
点赞 回复 分享
发布于 2023-02-15 01:01 广东
O(n^2)复杂度太高了 建议使用动态规划 + 贪心+ 二分 降到O(nlogn)
点赞 回复 分享
发布于 2022-02-10 10:29
值是没问题,但是走法有问题,要求是从低到高,你的方***包含错误走法,如:2、1、5
点赞 回复 分享
发布于 2021-04-13 19:30

相关推荐

双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
11-06 16:50
门头沟学院 Java
用微笑面对困难:word打字比赛二等奖的我,也要来凑合凑合
点赞 评论 收藏
分享
后端实习中的&nbsp;“好需求”,核心定义是能支撑面试深度讨论、可向外延伸多维度知识点的需求——&nbsp;本质是能让你在面试官拷打时,有足够空间展现技术积累、解决问题的能力,而非仅完成简单&nbsp;CRUD。结合面试反推逻辑,具体可分为三类,且都具备&nbsp;“可延伸、有讨论点”&nbsp;的共性。本质上是这个需求要支撑你能给面试官吹牛逼。典型的垃圾需求:或许有的同学可能还不理解什么叫做可以吹牛逼的需求,我举一个最简单的反例,很多同学写苍穹外卖的时候,总爱把一个需求写到简历上:&nbsp;&nbsp;基于OSS处理用户上传图片,获取OSS返回URL,实现用户远程上传图片。这就是个最典型的垃圾需求。因为你发现论代码链路,他没什么可讲的。论各种新潮技术,他也...
反装笔大队长:分情况吧。需求分业务需求和技术需求,技术需求你说的是对的。像CRM、OA、NC等等,这些业务系统很多时候对技术要求并不高的,不可否认的是 这些需求还是很不错的。 NC系统的进销存。实际上只是对仓库、库位、库存量、入库出库单价、数据报表等数据的统计与计算。CRM的市场活动、人面画像分析与统计、客户信息管理等,这些无非都是一些增删改查。对于业务需求面试官通常都是问你对业务的理解与过往对该业务的处理方案,并不会死磕技术。技术肯定是多多益善,但在业务开发中 正在有意义的是你的经历。
投递字节跳动等公司7个岗位
点赞 评论 收藏
分享
评论
65
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务