洛谷 P1049 装箱问题(01背包)

匿名 (未验证) 提交于 2019-12-02 23:49:02

一道水题,但看到好久没有发博客了,再一看是一道noip普及组t4,就做了。


题目链接

https://www.luogu.org/problemnew/show/P1049

解题思路

  一道裸的01背包,注意价值和重量是一个东西,且最后输出剩余的体积。

  随随便便二维就AC了,懒得写一维。

AC代码

 1 #include<iostream>  2 #include<algorithm>  3 #include<cmath>  4 #include<cstdio>  5 #include<cstring>  6 #include<cstdlib>  7 #include<queue>  8 #include<set>  9 #include<map> 10 #include<vector> 11 #include<iomanip> 12 #include<ctime> 13 #include<stack> 14 using namespace std; 15 int n,v,w[35],dp[35][20005]; 16 int main() 17 { 18     //freopen("","r",stdin); 19     //freopen("","w",stdout); 20     cin>>v>>n; 21     for(int i=1;i<=n;i++){ 22         cin>>w[i]; 23     } 24     for(int i=1;i<=n;i++){ 25         for(int j=1;j<=v;j++){ 26             if(j<w[i]) dp[i][j]=dp[i-1][j]; 27             else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+w[i]); 28         } 29     } 30     cout<<v-dp[n][v]; 31     //fclose(stdin); 32     //fclose(stdout); 33     return 0; 34 }

//NOIP2001普及组t4

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!