标签:
问题分组的背包问题将彼此互斥的若干物品称为一个组,这建立了一个很好的模型。不少背包问题的变形都可以转化为分组的背包问题(例如P07),由分组的背包问题进一步可定义“泛化物品”的概念,十分有利于解题。
(以上摘自背包九讲)
http://acm.hdu.edu.cn/showproblem.php?pid=1712
#include <stdio.h> #include <iostream> #include <algorithm> #include <math.h> #include <string.h> using namespace std; int a[105][105],dp[105]; int n,m; int main() { while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) scanf("%d",&a[i][j]); } memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=m;j>=0;j--) { for(int k=1;k<=j;k++) { dp[j]=max(dp[j],dp[j-k]+a[i][k]); } } } printf("%d\n",dp[m]); } return 0; }
标签:
原文地址:http://blog.csdn.net/lvshubao1314/article/details/42042959