当前位置: 首页 > news >正文

UVA 624(01背包记录路径)

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=565

 

记录路径可以用一个二维数组,记录改变时的量。然后从后往前可以推得所有的值。

#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
using namespace std;

#define MEM(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define debug printf("!\n")
#define INF 8000
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ep 1e-6

int dp[INF];

int way[INF][INF];//保存路径

int ci[INF];//容量
int wi[INF];//价值
int n,V,i,j,v,t,sum;


void zeroOnePack(int cost,int weight)
{
          for(v = V;v>=cost;v--)
          {
                    dp[v] =MAX(dp[v],dp[v-cost]+weight);
                    if(dp[v]==dp[v-cost]+weight)
                              way[i][v] = 1;
          }
}

int main()
{

          while(sf("%d",&V) && V)
          {

                    MEM(dp,0);
                    MEM(way,0);
                    MEM(wi,0);

                    sf("%d",&n);

                    for(i = n;i>=1;i--)//顺序需要
                    {
                              sf("%d",&wi[i]);
                    }

                    for(i = 1;i<=n;i++)
                    {
                              zeroOnePack(wi[i],wi[i]);
                    }

                    for(i = n,j = dp[V];i>=0,j>0;i--)
                    {
                              if(way[i][j])
                              {
                                        pf("%d ",wi[i]);
                                        j-=wi[i];//改变则检查之前wi[i]的量
                              }
                    }
                    pf("sum:%d\n",dp[V]);

          }
    return 0;
}

 

转载于:https://www.cnblogs.com/qlky/p/5035279.html

相关文章:

  • AngularJS 配置和运行phonecat错误
  • Netroid 的问题(未尝试)
  • 10 信号
  • Visual Assist X 10.8.2052的Crack破解补丁. 2014.11.05 (General release.)
  • 修改字符串 ToCharArray()
  • Java读取mat文件
  • 费用流
  • 字符串格式化 (%操作符)
  • Memcached简介
  • dialog工具,让脚本迈向图形化
  • 如何学好编程(三)---四步成为编程精英
  • ios项目中引用其他项目复习
  • 检测一下你的专业指数:2015年十大测试工具你认识几个?
  • 1126 求递推序列的第N项(51nod)
  • Char、AnsiChar、WideChar、PChar、PAnsiChar、PWideChar 的用法
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • co.js - 让异步代码同步化
  • css的样式优先级
  • Golang-长连接-状态推送
  • happypack两次报错的问题
  • Logstash 参考指南(目录)
  • php中curl和soap方式请求服务超时问题
  • Yii源码解读-服务定位器(Service Locator)
  • 简单数学运算程序(不定期更新)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 配置 PM2 实现代码自动发布
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 中文输入法与React文本输入框的问题与解决方案
  • Mac 上flink的安装与启动
  • MPAndroidChart 教程:Y轴 YAxis
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (04)odoo视图操作
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (强烈推荐)移动端音视频从零到上手(下)
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转载)hibernate缓存
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET微信公众号开发-2.0创建自定义菜单
  • [20161214]如何确定dbid.txt
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BT]BUUCTF刷题第4天(3.22)
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [bzoj4240] 有趣的家庭菜园
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C++]C++基础知识概述
  • [C语言]一维数组二维数组的大小