求解一个多维背包问题
如下一个二维背包问题:
TOJ3596,题意很简单,有N张光盘,每张光盘有一个价钱,现在要从N张光盘中买M张,预算为L,每张光盘有一个快乐值,要求在不超过预算并且恰好买M张,使得快乐值最大。
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
#define INF 0x1f1f1f1f
using namespace std;
int dp[105][1005],cost[105],value[105];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int i,j,k,n,m,T,L;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&L);
for(i = 1;i <= n; ++i)
scanf("%d%d",&cost[i],&value[i]);
for(i = 1;i <= m; ++i)
for(j = 0;j <= L; ++j){
dp[i][j] = -INF;
dp[0][j] = 0;
}
for(k = 1;k <= n; ++k)
for(j = m;j >= 1; j--)
for(i = L;i >= cost[k]; --i){
dp[j][i] = max(dp[j][i],dp[j-1][i-cost[k]]+value[k]);
}
int ans = 0;
for(i = 1;i <= L; ++i)
if(dp[m][i] > ans)
ans = dp[m][i];
printf("%d/n",ans);
}
}
*************************
我想知道的是,如何求解选中的到底是那几张光盘?
先谢谢大家,呵呵。
TOJ3596,题意很简单,有N张光盘,每张光盘有一个价钱,现在要从N张光盘中买M张,预算为L,每张光盘有一个快乐值,要求在不超过预算并且恰好买M张,使得快乐值最大。
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define max(a,b) ((a)>(b)?(a):(b))
#define INF 0x1f1f1f1f
using namespace std;
int dp[105][1005],cost[105],value[105];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int i,j,k,n,m,T,L;
scanf("%d",&T);
while(T--){
scanf("%d%d%d",&n,&m,&L);
for(i = 1;i <= n; ++i)
scanf("%d%d",&cost[i],&value[i]);
for(i = 1;i <= m; ++i)
for(j = 0;j <= L; ++j){
dp[i][j] = -INF;
dp[0][j] = 0;
}
for(k = 1;k <= n; ++k)
for(j = m;j >= 1; j--)
for(i = L;i >= cost[k]; --i){
dp[j][i] = max(dp[j][i],dp[j-1][i-cost[k]]+value[k]);
}
int ans = 0;
for(i = 1;i <= L; ++i)
if(dp[m][i] > ans)
ans = dp[m][i];
printf("%d/n",ans);
}
}
*************************
我想知道的是,如何求解选中的到底是那几张光盘?
先谢谢大家,呵呵。
...全文
相关推荐
多维背包问题的一个蚁群优化算法
多维背包问题的一个蚁群优化算法. 蚁群优化(ACO)是一种通用的启发式方法,已被用来求解很多离散优化问题.近年来,已提出几个ACO算法求解多维背包问题(MKP).这些算法虽然能获得较好的解但也耗用太多的CPU时间.为了降低用ACO求解MKP的复杂性,本文基于一种已提出但未实现过的。
论文研究-贪心粒子群算法求解多维0-1背包问题 .pdf
贪心粒子群算法求解多维0-1背包问题,郝俊玲,,本文将单维背包问题求解中常用的贪心思想推广到多维0-1背包问题,但多维背包问题的多约束特性使得单维背包问题中按物品性价比非增
论文研究-基于有导向变异算子求解多维背包问题.pdf
多维背包问题(MKP)是经典的NP难的组合优化问题。引入有导向变异算子的进化算法GM-EA(Guided Mutation EA)来求解该问题,通过结合粒子群优化的方法改进郭涛算法,更好地利用种群中的全局信息,取得较好的效果。实验结果表明GM-EA是求解MKP有效的算法。
求解多维背包问题的贪心粒子群算法.pdf
求解多维背包问题的贪心粒子群算法.pdf
混合粒子群算法求解多维背包问题.pdf
混合粒子群算法求解多维背包问题.pdf



