问题描述
对于一个正整数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])