解题思路:
动态规划,背包问题
注意事项:
参考代码:
N, m = map(int, input().split())
sub_value = []
sub_importance = []
for _ in range(m):
v, p = map(int, input().split())
sub_value.append(v)
sub_importance.append(p)
product = [[0] * (N + 1) for _ in range(m)]
for i in range(m):
for j in range(N + 1):
if sub_value[i] <= j:
product[i][j] = max(product[i - 1][j], sub_importance[i] * sub_value[i] + product[i - 1][j - sub_value[i]])
else:
product[i][j] = product[i - 1][j]
print(product[m - 1][N])
0.0分
0 人评分
数列 (C++代码)浏览:707 |
C语言训练-立方和不等式 (C语言代码)浏览:779 |
printf基础练习2 (C语言代码)浏览:321 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:387 |
C语言训练-数字母 (C语言代码)浏览:670 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:716 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:574 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:750 |
矩阵加法 (C语言代码)浏览:1768 |