整数划分问题python

动态规划,

设计一个算法,给出整数N,算法应该输出划分方案的总数,如果不存在这样的划分,则输出0

 

def cutting_count(arr):
    dyn=[0 for i in range(100)]
    n=len(arr)
    s=n*(n+1)/2#等差数列前N向求和
    if (s%2):#因为要把总和分成两个相等求和的集合,因此总和必须能被2整出,否则一个方法也找不到
        print(0)
        return
    s=int(s//2)
    dyn[0]=1#输入0时肯定只有一种分法
    for i in range(1,n+1):
        for j in range(s,i-1,-1):
            dyn[j]+=dyn[j-i]##dyn[j-i]表示加起来等于j-i的划分组数
    return dyn[s]//2
if __name__=='__main__':
    n=int(input())
    arr=[i for i in range(n)]
    count=cutting_count(arr)
    print(count)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值