用 Python 写了个代码,对 DP 有少量修改: 初值:  dp[m][m] = 1 for m in 1,10,20,30,50,100 状态:  dp[m][k] = \sum_{i <= m} dp[i][k-m] for k in 1:n if k > m 结果:  N = sum_m dp[m][n] 代码: from sys import stdin N = int(stdin.readline()) C = [1, 10, 20, 30, 50, 100] C.sort() dp = dict([(c,[0]*(N+1)) for c in C]) for k in xrange(1,N+1): for c in C: if k == c: dp[c][c] = 1 elif k > c: dp[c][k] = sum([dp[i][k-c] for i in C if i <= c]) CS = sum([dp[c][N] for c in C]) print CS
点赞 1

相关推荐

Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务