博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 624
阅读量:4977 次
发布时间:2019-06-12

本文共 937 字,大约阅读时间需要 3 分钟。

地址:

题意:背包问题,最多装多少。

mark:本题要求输出装的每一个价值,需要回溯一下,必须用二维的。

代码:

#include 
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;const int N = 10010;int n,vv;int v[30];int dp[30][N];int max(int a, int b) { return a > b ? a : b;}void zero_dp(int i){ for(int j = vv; j >= 0; j--) { dp[i][j] = dp[i-1][j]; if(j >= v[i]) dp[i][j] = max(dp[i][j], dp[i-1][j-v[i]]+v[i]); }}void print(int i, int j){ if(!i) return ; if(dp[i][j] == dp[i-1][j]) print(i-1, j); else { print(i-1, j-v[i]); printf("%d ", v[i]); }} int main(){ int i; while(~scanf("%d%d", &vv, &n)) { for(i = 1; i <= n; i++) scanf("%d", v+i); memset(dp, 0, sizeof(dp)); for(i = 1; i <= n; i++) zero_dp(i); print(n, vv); printf("sum:%d\n", dp[n][vv]); } return 0;}

转载于:https://www.cnblogs.com/andre0506/archive/2012/09/19/2693440.html

你可能感兴趣的文章
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>
前端利器躬行记(6)——Fiddler
查看>>
Intellij Idea新建web项目(转)
查看>>
用JAVA编写浏览器内核之实现javascript的document对象与内置方法
查看>>
centos iptables
查看>>
unity3d 移动与旋转 2
查看>>
寻找二叉查找树中比指定值小的所有节点中最大的那个节点
查看>>
如何设置输入框达到只读效果
查看>>
RT3070 USB WIFI 在连接socket编程过程中问题总结
查看>>
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>