质数拆分 蓝桥杯 python 一维动态规划

在这里插入图片描述

这题是比较难的0-1背包问题了,虽然蓝桥杯官网那里还是把它归类为简单,可能也是默认你知道这种神奇的解题思维吧。
背包问题要是不会的话就赶刷一下题,蓝桥杯哪里看到比较奇怪回溯次数很多的基本都是动规的,当然:可能跟着刷完了也还是不会 >-<。
链接: 这是这题b站上的类似题讲解还有其它动态规划的讲解合辑
下面展示一些 内联代码片

import math
#若干个两两不同的质数之和
temp=[2]
def panduan(num):
    flag=True
    for i in range(2,int(math.sqrt(num))+1):
        if (num%i==0):
            flag=False
            break
    return flag
for i in range(3,2019):
    if panduan(i):
        temp.append(i)

#动态规划
dp=[0]*2020#含义为组成i的值共有dp[i]种方法
dp[0]=1#为什么为1我也有疑惑。望大佬想到告诉我
for i in range(len(temp)):
#j这里的temp[i]相当于一个if的作用,假设你的物品容量大于背包容量,就不能继续放进背包里面了。
    for j in range(2019,temp[i]-1,-1):
        dp[j]+=dp[j-temp[i]]
print(dp[2019])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值