题解 | #Redraiment的走法#

Redraiment的走法

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

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


# 梅花桩_动态规划(Python)
# 关于初始化
# 数组 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] 比较一下,
# 选个大的放进去。

























全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
评论
3
1
分享
牛客网
牛客企业服务