【题目描述】

农夫约翰有 3 个容量分别为 a,b,c 升的桶。

最初 a,b 桶都是空的,而 c 桶是装满牛奶的。有时,农夫把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。并且每次倒牛奶,牛奶不会有损失。

写一个程序去帮助农民找出当 a 桶是空的时候,c 桶中牛奶所剩量的所有可能性。

【输入格式】

单独的 1 行包括 3 个整数 a,b,c。

【输出格式】

只有 1 行,升序地列出当 a 桶是空的时候,c 桶牛奶所剩量的所有可能性。

【输入样例】

8 9 10

【输出样例】

1 2 8 9 10

【数据范围】

对于100%的数据,1≤a,b,c≤20

分析

  • 这道题用暴力搜索解决
  • 遇到之前搜索过的三个桶的情况就直接return(用数组记录)
  • 依次展开深搜
  • 数组记录当a桶是0时的c桶,排序去重输出答案

附上代码

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;int a,b,c;
int ans[1000010];
bool flaga[30],flagb[30],flagc[30];
int cnt;void f(int x,int y,int z)
{if(flaga[x] && flagb[y] && flagc[z])return;flaga[x] = flagb[y] = flagc[z] = true;if(x == 0){cnt++;ans[cnt] = z;}if(x != 0){if(x <= b - y)f(0,x + y,z);else f(x - b + y,b,z);if(x <= c - z)f(0,y,x + z);else f(x - c + z,y,c);}if(y != 0){if(y <= a - x)f(x + y,0,z);else f(a,y - a + x,z);if(y <= c - z)f(x,0,y + z);else f(x,y - c + z,c);}if(z != 0){if(z <= a - x)f(x + z,y,0);else f(a,y,z - a + x);if(z <= b - y)f(x,y + z,0);else f(x,b,z - b + y);}return;
}int main()
{cin >> a >> b >> c;f(0,0,c);sort(ans + 1,ans + cnt + 1);for(int i = 1;i <= cnt;i++){if(i == 1){cout << ans[i] << " ";continue;}if(ans[i] == ans[i - 1])continue;cout << ans[i] << " ";}return 0;
}

母亲的牛奶(dfs)相关推荐

  1. USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)

    [USACO1.4.4]Mother's Milk 母亲的牛奶 Time Limit:10000MS  Memory Limit:65536K Total Submit:42 Accepted:27  ...

  2. 【USACO TRAINING】母亲的牛奶(洛谷1215题)

    母亲的牛奶 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A.B.C分别是三个从1到20的整数. 最初,A和B桶都是空的,而C桶是装满牛奶的. 有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶 ...

  3. 母亲的牛奶(BFS,DFS)

    农夫约翰有三个容量分别为 A,B,C升的挤奶桶. 最开始桶 A 和桶 B 都是空的,而桶 C 里装满了牛奶. 有时,约翰会将牛奶从一个桶倒到另一个桶中,直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止. ...

  4. 1355. 母亲的牛奶【一般 / DFS爆搜】

    https://www.acwing.com/problem/content/1357/ #include<bits/stdc++.h> using namespace std; int ...

  5. 母亲的牛奶 Mother's Milk

    题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...

  6. P1215 母亲的牛奶

    https://www.luogu.org/problem/show?pid=1215#sub 暴力模拟多种情况.我是用搜索写的,注意返回条件和约束条件. #include<iostream&g ...

  7. [USACO1.4]母亲的牛奶 Mother's Milk

    https://www.luogu.org/problemnew/show/P1215 题解:模拟+BFS /* *@Author: STZG *@Language: C++ */ #include ...

  8. 【USACO training】Chapter 1 入门

    整理的算法模板合集: ACM模板 目录 Section 1.1 介绍 Section 1.2 提交解决方案,任务类型,特殊问题 1.2.1 AcWing 1339. 你的旅途由此开始(字符串模拟) 1 ...

  9. c++小游戏——忍者必须死

    大家好,这里是Dark Mark.上一次,我认认真真地发布了一篇认认真真的文章(BFS母亲的牛奶),这次,我D.M(Dark Mark)要带给大家的是摸鱼的c++代码:忍者必须死. 在游戏中,忍者小黑 ...

最新文章

  1. 民间估值1个亿的AI核心代码终于开源了...
  2. 如何正确对待vb脚本里的session
  3. 【转】关于TP3.2 验证码不显示的问题
  4. Django - Django框架 简单介绍
  5. OpenGL设置透视投影并渲染旋转的立方体
  6. 继承_月隐学python第16课
  7. 图像处理五:python读取图片的几种方式
  8. Hue由于主备NameNode切换引发的问题
  9. 单片机c语言加到4归0,单片机C语言教程四
  10. 两个平面的位置关系和判定方程组解_高中必修二数学知识点
  11. MSN退休,寻找微软如何融合MSN的答案:体验skype6国际版MSN功能。
  12. sip协议详解(一)
  13. Python实现离线字典+听写单词(二):字典数据写进sqlite
  14. Docker制作深度学习镜像常用操作
  15. python 实现改变excel文件列宽
  16. 联想服务器安装win10系统安装教程,联想笔记本安装win10系统图文教程
  17. IOS 开发技能图谱——ios 开发工程师必知必会要点
  18. WPS Word二级标题自动编号,本来应该是2.1,可是却变成1.3,怎么办?
  19. 少儿编程网站源码和scratch课程
  20. 【小程序】中WXML的语法详解

热门文章

  1. Redis Cluster节点添加/删除实录
  2. 基于Faster-RCNN的目标检测(TF版) 步骤与问题解决办法
  3. C语言求斜边程序,用C语言编写勾股定理求斜边
  4. JAVA学习笔记五---函数
  5. CentOS Linux虚拟机内存耗费太大
  6. hibernate对oracle的文本字段按拼音排序
  7. html5图片按钮播放,html 播放 按钮
  8. Android使用RenderScript实现图片的高斯模糊效果
  9. 2020年英文取名大数据分析及图形化
  10. uniapp开发app 调用支付宝人脸实名认证