AcWing 背包模型相关问题 1023. 买书

'''
完全背包变形
'''


v = int(input())
arr = [10, 20, 50, 100]

# dp(i, j) 表示前i种书做选择,在总价格是j的条件下所有选择的种数
dp = [0] * (v + 1)
for i in range(len(arr)):
    for j in range(v + 1):
        if j == 0:
            dp[j] = 1  # 所有数都选0本,有一种选择
        else:
            if i == 0:
                dp[j] = 1 if j >= arr[0] and j % arr[0] == 0 else 0
            else:
                if j >= arr[i]:
                    dp[j] += dp[j - arr[i]]

print(dp[v])

猜你喜欢

转载自blog.csdn.net/xiaohaowudi/article/details/107719507