背包问题I
难度级别:B; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述

有一个背包容积为 V 和 n 个物品,并给出每个物品有一个体积。要求从 n 个物品中,任取若干个装入背包内,使背包的剩余空间为最小。

输入
第一行两个正整数 V 和 n,分别表示背包的容积和待装物品的个数;第二行包括 n 个正整数,表示 n 个物品的体积,两两之间有一个空格分隔。
输出
一个数,表示背包中剩余空间的最小值
输入示例
24 6
8 3 12 7 9 7
输出示例
0
其他说明
数据范围:0<V≤20000,0<n≤30
//============================================================================
// Name        : maxsum.cpp
// Author      : judyge
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================/*** 动态规划:计算最大子段和* 算法描述:* 数组a 有n个元素, 记 s[i] 为从a【0】到a[i]中,包含a[i]的最大子段和* 则: s[i] 的值为:  s[i-1]>0时, s[i-1]+a[i]*                  否则 a[i]*/
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include<algorithm>
using namespace std;static int maxn[100];   //中间最大值保存在数组
static int j=0;int maxSub(int *a, int n,int v)
{int i=0, max=0, max_pos = 0;int si_1=0, si = 0;//分别记录s[i-1], 和 s[i]的值int *p = (int *)malloc(n*sizeof(int)); //p[i] 助于记录哪些单元被选择, p[i]=1 表示s[i]计算的结果中中使用了s[i-1]的值if (p==NULL)return -1;max = si_1 = a[0];p[0] = 0;for (i=1; i<n; i++){if (si_1<0){p[i] = 0;si = a[i];} else{p[i] = 1;si = si_1+a[i];}si_1 = si;if (si>max&&si<=v){   //小于等于背包V的保存在数组max = si;max_pos = i;maxn[j++]=max;}}//找到最大子段和的位置for (i=max_pos; i>=0; i--)if (p[i]==0)break;//即i..max_pos为最大子段和的元素printf("%d--%d:%d\n", i, max_pos, max);free(p);p = NULL;return max;
}int main()
{int n;int v;cin>>v>>n;int a[n];for(int i=0;i<n;i++){cin>>a[i];}maxSub(a,n,v);sort(a,a+j);   //排列cout<<a[j];   //输出最大的  V的剩余最小return 0;
}

背包问题I--最大字段和相关推荐

  1. 使用ga算法解决背包问题_我如何使用算法解决现实生活中的手提背包的背包问题

    使用ga算法解决背包问题 I'm a nomad and live out of one carry-on bag. This means that the total weight of all m ...

  2. 贪心算法--阿里巴巴与四十大盗--背包问题

    一.问题描述 有一天,阿里巴巴赶着一头毛驴上山砍柴.砍好柴准备下山时,远处突然出现一股烟尘,弥漫着直向上空非扬,朝他这儿卷过来,而且越来越近.靠近以后,他才看清原来是一支马队,他们公有四十人,一个个年 ...

  3. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  4. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  5. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  6. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  7. Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用

    我们知道在 Go 语言中无论是变量.常量还是函数,对于首字母大小写有不同的处理. 首字母大写,标志着该字段或者函数是能导出的,也就是可以被其它包所能访问的: 首字母小写,标志着该字段是私有的,只能在本 ...

  8. Linux shell 学习笔记(9)— 循环语句(for、while)以及更改字段分隔符

    1. for 语句 bash shell 中 for 命令的基本格式如以下,$var 变量包含着这次迭代对应的当前列表项中的值. for var in list docommands done 也可以 ...

  9. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

最新文章

  1. java 自动登录功能_jsp实现用户自动登录功能
  2. 成就解锁:BCH修复了所有常见的第三方交易延展性矢量
  3. pwnable.kr lotto题解
  4. 【Python】Python入门:4000字能把元组tuple讲透吗?
  5. 第二十四周项目5-应用枚举
  6. 【转】.NET 的 WebSocket 开发包比较
  7. bzoj2705Longge的问题
  8. 转:开启nginx的gzip压缩的相关参数设置
  9. 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
  10. .NET Core 如何验证信用卡卡号
  11. 【hdu4609】 3-idiots FFT
  12. python 乌龟绘图turtle模块的使用
  13. 团队springboot基础镜像选择思考
  14. PPT图片别再直接插入,这样处理一下,让你的PPT秒变高逼格
  15. 安卓应用改变logo图标和名称
  16. c#如何实现叫号操作_基于.NET的排队语音叫号系统设计与实现
  17. 【Hive】(九)Hive 窗口函数总结
  18. windows 10系统搭建sftp服务器【详细】
  19. AVL右旋转思路分析与图解
  20. Python随堂笔记 常用模块和第三方库

热门文章

  1. 【Android 高性能音频】AAudio 音频流 数据回调细节 ( 数据回调函数优先级 | 数据回调函数 | 采样率 | 采样数 | 缓冲区调整 | 线程不安全 )
  2. Autodesk布道GIS新理念
  3. Python爬虫selenium、PhanmJs
  4. 关于PIC和FPGA
  5. 20169210《Linux内核原理与分析》第十一周作业
  6. POJ 2458 DFS+判重
  7. Mysql遇到Too many connections的解决办法
  8. 汇编实验4.1文件代号下的文件管理中为什么buf_size为80而buf可以容纳200个字节,矛盾吗?(不矛盾)
  9. 汇编中的DW:DW 定义一个字
  10. SSM中shiro的基本使用