分栗子
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 90   Accepted: 18

Description

亚洲赛要结束了,韩老师为了慰劳各位队员买了n袋栗子吩咐qs分给大家。馋嘴的qs想要把尽可能多的栗子给自己,但是又不能让大家发现,于是他决定在不超过一半重量的情况下拿走尽可能重的栗子

Input

输入第一行为T表示样例数

每组样例第一行为n(n<=15),接下来有n个数字表示每袋栗子的重量

Output

输出qs能拿走的栗子的总重量

一开始想的很简单,嗨,那不就是求和sum,然后再除以2就好了。可是不对,即使是取一半,但是有些例子中还是取不到的,因为是整数,有些时候只能取到小于一半数量的栗子。

这里提供两种方法,第一种是01背包法,因为它对于每种物品,只有取或不取两种情况,可以把sum/2类比成01背包中的那个最大容量,然后求的是在不超过那个最大容量的情况下,背包中能够装的最大容量的价值数。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;//一开始数组开太小了,注意这里的f数组指的是价值,看下面的循环,f[v],所以数组要开的稍微大一点;
int w[20],f[400];
int main(){int T,i,j,n,v;int sum;cin>>T;while(T--){memset(w,0,sizeof(w)); memset(f,0,sizeof(f));cin>>n;sum=0;for(i=0;i<n;i++){cin>>w[i];sum+=w[i];}sum=sum/2;for(i=0;i<n;i++){for(v=sum;v>=w[i];v--){if(f[v]>f[v-w[i]]+w[i])f[v]=f[v];else f[v]=f[v-w[i]]+w[i];}}cout<<f[sum]<<endl;}
}

第二种方法:

相当于是搜索,用递归并且遍历一遍所有的数组;

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;int a[16],mid,k;void findx(int n,int sum){int tsum,i,j;for(i=n;i>=1;i--){tsum=sum+a[i];if(tsum>mid) continue;if(tsum==mid) {k=tsum; return ;}if(tsum<mid){findx(i-1,tsum);if(tsum==mid) { k=tsum;  return ;}}if(k<tsum) k=tsum; }    return ;
}
int main(){int T,i,j;int sum,n;cin>>T;while(T--){memset(a,0,sizeof(a));mid=sum=0;  k=0;cin>>n;for(i=1;i<=n;i++){cin>>a[i];sum+=a[i];}sort(a+1,a+1+n);mid=sum/2;findx(n,0);cout<<k<<endl;}
}

ZJNU——1695(分栗子)相关推荐

  1. 4k超清壁纸APP抓包获取所有壁纸下载地址

    4k超清壁纸APP抓包获取所有壁纸下载地址   Lan   2020-05-09 10:38   288 人阅读  0 条评论 额,最近发现手机壁纸似乎有段时间没换了,刚好又看到网上有一个APP叫做4 ...

  2. 浏览器上跑:TensorFlow发布实时人物分割模型,秒速25帧,24个部位

    分栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI TensorFlow开源了一个实时人物分割模型,叫BodyPix. 这个模型,在浏览器上用TensorFlow.js就能跑. 而且,帧率还 ...

  3. 【题解反思】海亮信息集训A-B班-分治初步专项

     一.山楂关卡 题意简述: 小 VHOS 带着 N 颗山楂球来到 A 班的阵地准备缩到位置上吃山楂球. 但是 A 班大佬们太强了,所以小 VHOS 每经过一个 A 班大佬身边, 他都需要交出他手中 ...

  4. 【考试题解】 递归递推

    T1:station 题目描述: 小 VHOS 带着 N 颗山楂球来到 A 班的阵地准备缩到位置上吃山楂球. 但是 A 班大佬们太强了,所以小 VHOS 每经过一个 A 班大佬身边, 他都需要交出他 ...

  5. 递推递归专练|——考试——|

    翻车了,上次装大了,这次来了最不拿手的....递推(下次是更不拿手的搜索~~) ε=(´ο`*)))唉        ---------------------垃圾题目啊--------------- ...

  6. 为什么一场爆破营销能把销量翻10倍?

    原文链接:http://udn.yyuap.com/forum.php?mod=viewthread&tid=24047&from=portal 一场集采,来一二百人就算不错了,爆破营 ...

  7. 举个栗子~Tableau 技巧(237):用多节点瀑布图分阶段查看数据

    瀑布图(下图)既能反映数据的多少,又能直观的反映出数据的增减变化.早期的栗子,我们分享过 瀑布图 的实现方法. 如果将瀑布图用在一些项目进度分析中,要阶段性查看当前的数据情况,就得在瀑布图中增加一些节 ...

  8. 一文快速入门分库分表中间件 Sharding-JDBC (必修课)

    书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...

  9. c语言 lookup函数怎么用_菜鸟记502用lookup和vlookup函数核对数据的一个小栗子

    欢迎转发扩散点在看 万一您身边的朋友用得着呢? 各位朋友早上好,小菜继续和您分享经验之谈,截止今日小菜已分享400+篇经验之谈,可以文章编号或关键词进行搜索. 微信推送规则发生改变,如果您想看到小菜每 ...

最新文章

  1. 【Kafka】Kafka数据可靠性深度解读
  2. mysql远程连接设置_MySQL远程连接设置
  3. 抽奖啦!AI内参、李沐新书深度学习、米家扫地机器人送送送
  4. 列表框QListWidget 类
  5. 从测试角度对测试驱动开发的思考【转】
  6. 深入.NET平台和C#编程笔记 第七章 深入理解多态
  7. linux 内核 ide,Linux设备驱动程序学习(7)-内核的数据类型
  8. 一个数据的乔迁奇遇记
  9. sqoop 中文文档 User guide 三 export
  10. 《深入理解TypeScript》读后感一篇【基础篇】
  11. Vray for UE4 (一)
  12. 为什么说苏宁必买万达百货
  13. java set retainall_Java的Set集合中的retainAll()方法
  14. JS小图切换大图轮播代码
  15. 可以免费测试的短信验证码接口接入
  16. 单元测试总结反思_语文期中考试总结反思
  17. Java How to Program练习题_第六章_深入理解方法(Methods: A Deeper Look)
  18. iOS开发IPhone以及iPad尺寸汇总
  19. 上古卷轴3晨风详尽指引攻略
  20. Stoner Pipeline Simulator(SPS) v10.4.0-ISO 1DVD管道模拟仿真软件

热门文章

  1. 运作团购渠道,如何寻找团购客户(四)?
  2. word文档怎么把波浪线去掉_Word实战技巧:干掉波浪线,Word中红色波浪线如何去掉?...
  3. 计算机工程学院新生欢迎标语,欢迎新生标语(精选50句)
  4. android --拍照相册选取图片[兼容小米等其他手机]
  5. 10段世界最美的英语美文
  6. google的秘密入口
  7. ZCMU 1919 :kirito's 星爆气流斩 (多重背包问题)
  8. 泰克MSO2014B|MSO2024B|MSO2022B混合信号示波器使用教程
  9. 偶像的力量-松哥经典语录
  10. SAP中CK11N成本估算的取价逻辑