算法模板之01背包问题
2017-08-29 16:46
239 查看
二维数组的写法:
int w
,p
;
int dp[M]
;
for(int i=0; i<n; i++)
for(int j=0; j<=m; j++)
if(j<w[i])
dp[i+1][j]=dp[i][j];
else
dp[i+1][j]=max(dp[i][j],dp[i][j-w[i]]+p[i]);
cout<<dp
[m]<<endl;
一维数组的写法:
int w
,p
,dp
;
for(int i=0; i<n; i++)
cin>>w[i]>>p[i];
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)
for(int j=m; j>=w[i]; j--)
dp[j]=max(dp[j],dp[j-w[i]]+p[i]);
cout<<dp[m]<<endl;
int w
,p
;
int dp[M]
;
for(int i=0; i<n; i++)
for(int j=0; j<=m; j++)
if(j<w[i])
dp[i+1][j]=dp[i][j];
else
dp[i+1][j]=max(dp[i][j],dp[i][j-w[i]]+p[i]);
cout<<dp
[m]<<endl;
一维数组的写法:
int w
,p
,dp
;
for(int i=0; i<n; i++)
cin>>w[i]>>p[i];
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)
for(int j=m; j>=w[i]; j--)
dp[j]=max(dp[j],dp[j-w[i]]+p[i]);
cout<<dp[m]<<endl;
相关文章推荐
- 01背包问题算法实现
- 实际问题的算法抽象——动态规划中的01背包问题
- 数据结构经典算法学习之01背包问题
- 夕拾算法进阶篇:18)装箱问题 (01背包_动态规划DP)
- 背包问题模板(01背包,完全背包,多重背包)
- 算法导论学习笔记(十三):动态规划(三):01背包问题
- 算法:动态规划解 0-1 背包问题
- 背包问题模板,POJ(1014)
- 果蝇算法--背包问题
- 01背包问题
- 01背包问题的动态规划算法、蛮力法和空间优化算法
- 01背包问题 -- 经典动态规划题
- 01背包问题 第一次DP
- 01背包问题
- 贪婪算法解决背包问题
- 01背包问题
- 【算法导论学习-27】动态规划经典问题01:钢条切割的最大收益
- poj 1742 多重背包算法优化问题
- [算法]动态规划之背包问题
- 01背包问题通俗讲解