Description

农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的。有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了。当然每一次灌注都是完全的。由于节约,牛奶不会有丢失。 写一个程序去帮助约翰找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。

Input

单独的一行包括三个整数A,B和C。

Output

只有一行,列出当A桶是空的时候,C桶牛奶所剩量的所有可能性。

Sample Input

8 9 10

Sample Output

1 2 8 9 10

题意:

起初 A B 桶是空的,C 桶是满的,C桶的牛奶可以倒到 A B桶中,停止的条件是 A B 变满或者 C桶变空

解释一下样例:

1、C桶中的牛奶倒进A 桶中,A 满停止运行,此时 C桶剩余 2

2、C桶中的牛奶倒进B 桶中,B 满停止运行,此时 C桶剩余 1

3、C桶中的牛奶倒进A桶中 8,B桶中 2,把A桶中的牛奶倒进 C中,A空,C桶剩余 8

4、C桶中的牛奶倒进B桶中 9,A桶中 1,把B桶中的牛奶倒进 C中,B空,C桶剩余 9

5、C桶中的牛奶倒进A桶中 8,B桶中 2,把A桶中的牛奶倒进 C中,B同种的牛奶倒进C中,AB空,C桶剩余 10

思路:

DFS 搜索所有的情况

首先列出所有的情况: C->A, C->B,A->B,A->C,B->A,B->C

每一种情况又分为两种情况,倒的桶是否能够使 被倒桶 倒满

例如 C->A

(1) C能使 A满,A的现有容量是 a(A桶的体积),B桶现有容量不变,C桶减去原来A桶缺少的

(2)C不能使A满,A的现有容量为原来的容量+C现有的容量,B桶容量不变,C桶容量变为 0

C->B 的时候,不用去判断 A此时满不满,因为12 种DFS,总有一种情况能够去判断A满不满的情况

DFS确定结束条件:

如果当前容量已经搜索过了,就结束当前搜索

用三维 vis 数组记录是否已经搜索过

CODE

--------------------- 本文来自 米诺minoz 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/jkdd123456/article/details/82905202?utm_source=copy

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <string>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
typedef long long LL;
using namespace std;
int a,b,c;
int ans[30];
int vis[30][30][30];
int flag=0;
void DFS(int x,int y,int z)
{if(vis[x][y][z]==1)return ;elsevis[x][y][z]=1;if(x==0)ans[flag++]=z;if(z-a+x>=0)DFS(a,y,z-a+x);//将c给aelseDFS(x+z,y,0);if(x-c+z>=0)DFS(x-c+z,y,c);//将a给celseDFS(0,y,z+x);if(z-b+y>=0)DFS(x,b,z-b+y);//将c给belseDFS(x,y+z,0);if(y-c+z>=0)DFS(x,y-c+z,c);//将b给celseDFS(x,0,z+y);if(x-b+y>=0)DFS(x-b+y,b,z);//将a给belseDFS(0,y+x,z);if(y-a+x>=0)DFS(a,y-a+x,z);//将b给aelseDFS(x+y,0,z);}
int main()
{int i;cin>>a>>b>>c;DFS(0,0,c);sort(ans,ans+flag);for(i=0; i<=flag-2; i++){cout<<ans[i]<<" ";}cout<<ans[flag-1]<<endl;return 0;
}

1.4.4 Mother's Mil 母亲的牛奶(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. 母亲的牛奶 Mother's Milk

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

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

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

  5. P1215 母亲的牛奶

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

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

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

  7. 母亲的牛奶(dfs)

    [题目描述] 农夫约翰有 3 个容量分别为 a,b,c 升的桶. 最初 a,b 桶都是空的,而 c 桶是装满牛奶的.有时,农夫把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了.并且每次倒牛奶,牛 ...

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

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

  9. before和after怎么区分_如何区分before和after~有时候觉得两者可以通用

    问题描述: 如何区分before和after~有时候觉得两者可以通用 我找到一些相对以上更容易看得出 before:1.主句动作发生之前,从句动作发生在后 Turn off the light bef ...

  10. java静态内部类了解一下

    1. java内部类 什么是内部类?将一个类的定义放在另一个类的内部,就是内部类.Java的内部类主要分为成员内部类.局部内部类.匿名内部类.静态内部类. public class 外部类的名称{// ...

最新文章

  1. 测试多个输入条件的方法
  2. (01)System Verilog 程序数据采集
  3. WINDOWS SERVER 2008 R2 GHO 纯净版
  4. 已有打开的与此命令相关联的 DataReader,必须首先将它关闭
  5. “automation服务器不能创建对象”的问题的解决方案大全
  6. 深入剖析RGB、CMYK、HSB、LAB
  7. 2007软件英雄会暨CSDN社区英雄榜颁奖典礼邀请人员名单
  8. STM32F407ZGT6之硬件介绍
  9. 1号店详情页(共5页)
  10. Oracle Temp临时表空间及其故障处理
  11. IE浏览器打不开jupyter notebook网页的解决办法
  12. 矩阵求逆操作的复杂度分析(逆矩阵的复杂度分析)
  13. oracle-表创建
  14. android 9 所有应用的行为变更 和 以API28为目标的应用行为变更
  15. 《高手:精英的见识和我们的时代》思维导图
  16. 论文写作中常用工具和格式排版
  17. 22届硕士,去年秋招拿了字节跳动offer,有一说一,不是很难进
  18. 压力大,觉得身心俱疲,年轻人该怎么应对?
  19. 访问学者英语口语顺利通关秘诀
  20. 2016最新申请搜狐自媒体的6点官方建议!

热门文章

  1. 原生 JS 撸一个轮播图(支持拖拽切屏)
  2. Python数据分析(二): Numpy技巧 (3/4)
  3. Utils工具方法集插件详解
  4. 读JDK动态代理源码(Proxy类)
  5. 代码生成的思考:MyMeta提供数据库架构,反射、Emit提供构建的提供动态创建的环境...
  6. 利用JDBC开发图书管理系统
  7. java多线程在单例模式下是否需要同步
  8. 谈谈如何优化MYSQL数据库查询
  9. bug管理工具之禅道的测试模块的使用
  10. iOS import,include和class的区别