'''
看成分组背包问题求解,每个公司看成一个分组
分组里面可以选择M个物品,每个物品的开销都是自己的编号,价值就是题目给出的一行盈利
最后求解的是分组背包的最大价值总和以及形成最大价值总和的选择的方案
'''
# dp(i, j) 表示从i分组开始后面的所有分组做选择,总开销不超过j的所有选择中总价值的最大值
dp = [[0] * 20 for i in range(20)]
# dp(i, j) 表示从i分组开始后面的所有分组做选择,总开销不超过j的所有选择中总价值最大的选择方案在第i组中选择的物品编号
choice = [[-1] * 20 for i in range(20)]
N, M = map(int, input().split())
arr = []
for _ in range(N):
arr.append(list(map(int, input().split())))
for i in range(N - 1, -1, -1):
for j in range(M + 1):
if i == N - 1:
for k in range(M):
if j >= k + 1:
if arr[i][k] > dp[i][j]:
dp[i][j] = arr[i][k]
choice[i][j] = k
else:
dp[i][j] = dp[i + 1][j]
for k in range(M):
if j >= k + 1:
if dp[i + 1][j -
AcWing 背包相关问题 1013. 机器分配
最新推荐文章于 2024-11-14 21:21:03 发布
本文详细探讨了AcWing在线编程平台上的背包问题实例——1013. 机器分配,主要涉及动态规划算法的应用。通过分析题意,阐述了解题思路和步骤,包括状态转移方程的建立,以及如何利用动态规划求解此类问题,旨在帮助读者深入理解动态规划在实际问题中的应用。
摘要由CSDN通过智能技术生成