0
点赞
收藏
分享

微信扫一扫

【思特奇杯·云上蓝桥-算法集训营】第1周 10. 整数划分(python)

boomwu 2022-01-07 阅读 82

问题描述
对于一个正整数n的划分,就是把n变成一系列正整数之和的表达式。注意,分划与顺序无关,例如6=5+1.跟6=1+5是同一种分划,另外,这个整数本身也是一种分划。
例如:对于正整数n=5,可以划分为:
1+1+1+1+1
1+1+1+2
1+1+3
1+2+2
2+3
1+4
5
输入描述
输入一个正整数n
输出描述
输出n整数划分的总数k

输入样例
5
输出样例
7

答案提交

n = int(input())
dp = [[0 for i in range(n + 1)] for j in range(n + 1)] # 状态初始化
dp[0][0] = 1

for i in range(1, n + 1):
    for j in range(1, n + 1):
        if i < j:
            dp[i][j] = dp[i][i]
        elif i == j:
            dp[i][j] = 1 + dp[i][j - 1]
        else:
            dp[i][j] = dp[i][j - 1] + dp[i - j][j]
print(dp[n][n])
举报

相关推荐

0 条评论