题目描述:

饭店的大师傅老蔡正准备炒菜,而徒弟小刚正在和几个服务员微信聊天和抢红包,老蔡发现炒菜没油了,高喊小刚去储藏室里倒油,小刚走进储藏室看到有 n 个油桶都装满了油,这 n 个油桶容积 (整数) 大小各不相同,小刚需要 m 升 (整数) 油,请你不借助任何其他容器,能否直接从 n 桶油中任意取 k 桶 (1<=k<=n) 油,其油的总量正好时 m 升,如果可以就输出 “yes”,否则输出 “no”

输入描述

多组输入第一行两个整数 n,m。第二行 n 个整数,即油桶的容积。n,m 均不超过 100,每个油桶容积不超过 100。

输出描述

一行 yes 或 no

样例输入:

5 10

1 2 3 1 1

6 11

3 5 3 2 1 4

样例输出:

no

yes

代码如下

#include<bits/stdc++.h>
using namespace std;
//回溯法
/*5 101 2 3 1 16 113 5 3 2 1 4*/
int needOil;//需要的油的数量
int PailNum;//油桶的数量
int* a;
bool* select;
bool FindFlag = 0;
bool JudgeOver(int node,int rv) {int sum = 0;for (int i = node; i < PailNum; i++){sum += a[i];}if (sum < rv){return 0;}else{return 1;}}
void DFS( int V , int*a,int node) {if (FindFlag==1){return;}// V 代表现在已经储存的油量if (V== needOil){cout << "yes" << endl;FindFlag = 1;return;}if (JudgeOver(node, needOil - V) == 0)//如果下面的 算上本次的不可能超过V就退出{cout << "no" << endl;FindFlag = 1;return;}else{//如果不会超过需要的就进行左分支。if (V + a[node] <= needOil){V += a[node];select[node] = true;DFS(V, a, node + 1);select[node] = false;V -= a[node];}else{cout << "no" << endl;FindFlag = 1;return;}//如果不会 太少进行右分支if (JudgeOver(node+1, needOil - V) == 0)//如果下面的 不算上本次的不可能超过V就退出{cout << "no" << endl;FindFlag = 1;return;}else{select[node] = false;DFS(V, a, node + 1);select[node] = false;}}}int main() {while (cin>> PailNum>> needOil){a = new int[PailNum];for (int i = 0; i < PailNum; i++){cin >> a[i];}select = new bool[PailNum]; memset(select, false, PailNum * sizeof(bool));FindFlag = 0;//初始容量为0;从第一个开始遍历DFS(0, a,0);}return 0;
}

P1430 油桶问题相关推荐

  1. rust里面的柴油桶有什么用_一种柴油桶倒油装置的制作方法

    本发明属于柴油桶往外倒油装置技术领域.具体涉及一种省力,省时,轻便,操作灵活,使用后不留残液稍加清洗处理,就能进行下一个不同液体的抽取,并能做到滴油不浪费的一种柴油桶倒油装置. 背景技术: 目前,油库 ...

  2. PS仿制图章工具、油桶工具、渐变

    一.仿制图章工具: 1.找到仿制图章工具,或者按快捷键s,选择需要仿制的内容,按住alt,然后找到需要放置的地方,鼠标拖动即可完成仿制. 一.油桶工具: 1.激活:快捷键:G 2.选择需要填充颜色的位 ...

  3. C++作业 设计一个程序实现油桶面积与体积的计算(构造函数与析构函数)

    [问题描述] 某工厂使用一种圆柱形的铁桶来运输色拉油,但是关于该油桶的容量已经模糊,现在工人们测得了油桶直径和高(由键盘输入),请帮工人们计算一下油桶容量和制造该油桶需要的铁皮面积. 注意这个油桶是有 ...

  4. C++ 课程作业 类与对象2——构造函数、拷贝构造函数、析构函数(油桶题)

    首先题目要求 某工厂使用一种圆柱形的铁桶来运输色拉油,但是关于该油桶的容量已经模糊,现在工人们测得了油桶直径和高(由键盘输入),请帮工人们计算一下油桶容量和制造该油桶需要的铁皮面积. 注意这个油桶是有 ...

  5. 问题 H: 【递归】油桶问题------------递归+思维

    题目描述 楚继光扬扬得意道:"当日华山论剑,先是他用黯然销魂掌破了我的七十二路空明拳,然后我改打降龙十八掌,却不防他伸开食指和中指,竟是六脉神剑,又胜我一筹.可见天下武学彼此克制,武学之道玄 ...

  6. 问题 G: 【递归】数字三角形,问题 H: 【递归】油桶问题

    黑色的飞鸟掠过天空,我站在城中,看时间燃成灰烬,哗哗作响...... 题目描述 对于大多数人来说,"我们是这么的正常,因此也就这么的平庸."而天才总是与众不同的,所以当邪狼问修罗王 ...

  7. sincerit 算法竞赛宝典--油桶问题

    算法竞赛宝典–油桶问题 题目描述 楚继光扬扬得意道:"当日华山论剑,先是他用黯然销魂掌破了我的七十二路空明拳,然后我改打降龙十八掌,却不防他伸开食指和中指,竟是六脉神剑,又胜我一筹.可见天下 ...

  8. 【洛谷P1430】序列取数【dp】

    题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1430 给定一个长为n的整数序列,由A和B轮流取数(A先取).每个人可从序列的左端或右端取若干个数 ...

  9. unity制作爆炸以及受到爆炸波及的油桶(脚本控制)

    在游戏中,很多时候要用到爆炸这一重要的游戏效果,但是光靠特效是不能实现爆炸的物理特性的 在这篇博客中我将介绍一下 爆炸的制作 我们首先 要下载一个爆炸的粒子系统(官方商店中有免费的) 其次 我们需要对 ...

最新文章

  1. hdu 5273 Dylans loves sequence 逆序数简单递推
  2. Flink+Hologres助力伊的家电商平台建设新一代实时数仓
  3. 华为上机考试题系列(一):牛客网的奇葩操作
  4. android编程绘图,Android编程绘图操作之弧形绘制方法示例
  5. git 代理 git_如何成为Git专家
  6. pom文件报错_FastDFS实战总结,分布式文件存储,高并发高可用,看这篇就够了...
  7. Jmeter中的Bean shell
  8. matlab 点太多,matlab输出参数太多
  9. Linux自学day2
  10. 利用Python网络爬虫抓取韩寒博客推荐第一篇(urllib的简单使用与Beautifulsoup实战,i/o编程)
  11. 何凯明最新一作MAE解读系列2之代码实践
  12. 神州数码云平台基础环境搭建
  13. c语言scanf不用取地址符,关于c中printf和scanf函数是否使用取地址符的疑问
  14. 火车票价还不够高(按照《经济学通识》手敲的(非原创))
  15. “0基础考生考前三小时突破《申论》80分气哭学霸”——单一题(问题+影响)
  16. GK309协议电子工牌数据模拟器+Socket数据发送 JAVA版-源码
  17. 跨站脚本(XSS)攻击
  18. 2021年煤矿安全监测监控考试资料及煤矿安全监测监控考试试卷
  19. (转)项目管理经验分享 - 项目经理的核心竞争力
  20. uniapp 侧边选项卡(左右滚动)

热门文章

  1. 宏宇社:国外lead入门教程(五)如何开始操作lead任务
  2. 比苹果还贵4000元!华为Mate20系列发布:3D结构光、反向快充、石墨烯散热
  3. 2021icpc上海站G
  4. CSGO服务器基础搭建(Linux下)
  5. 复制粘贴暴利网赚蓝海项目案例详细拆解
  6. div图片背景虚化不影响图片上的文字_HTML+CSS入门 如何实现背景图片虚化效果
  7. 图片无损放大,实现效果还是用嗨格式图片无损放大
  8. Meteor.js
  9. 8*8led矩阵的滚动广告幕的c语言程序,基于89C51单片机的8#215;8点阵LED字符显示器的设计...
  10. linux mv合并目录,合并文件夹与MV?