【UVA624 01背包中的路径问题】
UVA624
给你一个序列,让你从其中选出一些数,然后得到最接近题目所给的一个数,并需要输出所选的数
考察o1背包容量是从大到小容量减少的方式来进行装入的,
路径记录,感觉好题啊
初始化为求正好放满的模型
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=10001;
int w[30],dp[maxn];
bool mp[maxn][30];
int sum,n;
int main()
{while(scanf("%d%d",&sum,&n)!=EOF){memset(mp,0,sizeof(mp));memset(dp,0,sizeof(dp));for(int i=0;i<n;i++) scanf("%d",&w[i]);for(int i=0;i<n;i++)for(int j=sum;j>=w[i];j--){dp[j]=max(dp[j],dp[j-w[i]]+w[i]);if(dp[j]==(dp[j-w[i]]+w[i]))mp[j][i]=true;}for(int i=n-1,j=sum;i>=0;i--){if(mp[j][i]){printf("%d ",w[i]);j-=w[i];}}printf("sum:%d\n",dp[sum]);}return 0;
}
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<stdlib.h>
#include<queue>
#include<iostream>
using namespace std;
int dp[111000],vis[50][111000];
int f[50],k=0,w[50];
void prime(int n,int m)
{if(n==0||m<0)return;if(vis[n][m]==0)prime(n-1,m);else{prime(n-1,m-w[n]);f[k++]=w[n];;}
}
int main()
{int m,n,i,j;while(scanf("%d",&m)!=EOF){memset(w,0,sizeof(w));scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&w[i]);}memset(dp,0,sizeof(dp));memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){for(j=m;j>=w[i];j--){if(dp[j]<dp[j-w[i]]+w[i]){dp[j]=dp[j-w[i]]+w[i];vis[i][j]=1;}}}k=0;memset(f,0,sizeof(f));prime(n,m);for(i=0;i<k;i++)printf("%d ",f[i]);printf("sum:%d\n",dp[m]);}return 0;
}
【UVA624 01背包中的路径问题】相关推荐
- 416. 分割等和子集 - 01背包中判断是否装满的问题
✅01背包中是"否能装满"的问题 如果能把数组分割成两个子集且使得子集的元素和相等,那么证明该集合的元素总和必须要是能被2整除的,这是一个前提条件 假设总和为sum,那问题就转化成 ...
- 494. 目标和 - 01背包中装满背包有几种方法的问题
✅01背包中"装满背包有几种方法"的问题 这道题难就难在如何把题面转化为背包问题
- 01背包中背包装满和不装满
背包: 有n 种不同的物品,每个物品有两个属性,v体积,c价值,现在给一个体积为 m 的背包,问最多可带走多少价值的物品. 状态转移方程 dp[i][j]=max(dp[i-1][j], ...
- 01背包中是否背包装满问题
背包: 有n 种不同的物品,每个物品有两个属性,v体积,c价值,现在给一个体积为 m 的背包,问最多可带走多少价值的物品. 状态转移方程 dp[i][j]=max(dp[i-1][j], ...
- 【HDU1203 HDU2955 01背包中的简单概率问题处理】
HDU1203 Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了. 要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的.Sp ...
- 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...
- 目标和(01背包应用)
给你一个整数数组 nums 和一个整数 target . 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 ...
- 动态规划-----------01背包,完全背包与多重背包
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...
- 对01背包的分析与理解(图文)
首先谢谢Christal_R的文章(点击转到链接)让我学会01背包 本文较长,但是长也意味着比较详细,希望您可以耐心读完. 题目: 现在有一个背包(容器),它的体积(容量)为V,现在有N种物品(每个物 ...
最新文章
- linux下接口持续集成,部署jenkins持续集成工具
- 微信(WeChat)电脑端多开
- python对文件的读操作方法有哪些-Python文件常用操作方法
- php 的函数参数值类型限定
- 使用tracee编写规则追踪系统安全事件
- 【转载】SAP物料账未分摊差异分析
- 用户 Outlook 2007 附件突然不能预览,在国外网站找了解决方案。
- Elasticsearch-kopf导览
- WEG的完整形式是什么?
- fedora 编译安装mysql_Fedora 下编译安装安装基于Lighttpd+PHP5+MySQL5
- 十大经典排序算法动画演示
- nsfilemanager
- matlab 工具函数、matlab toolbox(工具箱)
- 网络之路——交换机基础篇
- java优化 pdf_Java性能优化权威指南 PDF扫描[132MB]
- T6企业管理软件 5.1 - 导出单据列表显示“数据库已达到最大值”“创建临时表失败”
- 完整的连接器设计手册_连接器设计中,仿真技术提供了力学理论依据
- android 自动 创建文件夹,android - 如何在SD卡上自动创建目录
- B端和C端产品主要差异:用户、体验、数据
- 泰山OFFICE技术讲座:Times New Roman的kerning研究
热门文章
- [物理学与PDEs]第4章习题3 一维理想反应流体力学方程组的数学结构
- 同一服务器 数据库间 不同表 的查询
- step by step设置postgresql用户密码并配置远程连接
- SQL Server2005重装Performance Monitor Counter 的问题解决
- ASP.NET MVC 2
- 高通 8x12 添加 TP和按键
- 不动产登记进入倒计时 哪些房子必须要卖掉?
- esp8266 lcd 天气_8266WIFI加LCD显示时间及天气pm25
- vc 显示非模态对话框
- Google虚拟现实游戏 Ingress 邀请码一枚(已领)