USACO / Mother's Milk (DFS)
农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的。有时,农民把牛奶从一个桶倒到 另一个桶中,直到被灌桶装满或原桶空了。当然每一次灌注都是完全的。由于节约, 牛奶不会有丢失。
描述
写一个程序去帮助农民找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。
格式
PROGRAM NAME: milk3
INPUT FORMAT:
(file milk3.in)
单独的一行包括三个整数A,B和C。
OUTPUT FORMAT:
(file milk3.out)
只有一行,升序地列出当A桶是空的时候,C桶牛奶所剩量的所有可能性。
SAMPLE INPUT 1
8 9 10
SAMPLE OUTPUT 1
1 2 8 9 10
SAMPLE INPUT 2
2 5 10
SAMPLE OUTPUT 2
5 6 7 8 9 10
分析
Way :DFS 因为牛奶的总量是不变的,所以可以用a,b中的牛奶量做状态,初始状态是(0,0),每次只能有6种选择,a倒b,a倒c,b倒a,b倒c,c倒a,c倒b。用一个数组vis[i][j]判重,s[i]记录c中所有可能值(s[i]=true表示c中可能出现i),如果当前状态是(0,x),那么s[mc -x]=true,最后输出s中所有true的就可以了。
CODE:
/* ID: 138_3531 LANG: C++ TASK: milk3 */#include <iostream> #include <fstream> using namespace std; ifstream fin("milk3.in"); ofstream fout("milk3.out"); int a, b, c, tf[21][21] = {0};void dfs(int i, int k) {if (tf[i][k])return;tf[i][k] = 1;dfs(0, k);dfs(i, 0);if (i >= b - k)dfs(i - b + k, b);else dfs(0, i + k);if (k >= a - i)dfs(a, k - a + i);else dfs(i + k, 0);int j = c - i - k;if (j >= a - i)dfs(a, k);else dfs(i + j, k);if (j >= b - k)dfs(i, b);else dfs(i, k + j); }int main() {fin >> a >> b >> c;dfs(0, 0);for (int i = 20, ge = 0; i >= 0; i--)if (tf[0][i]) {if (ge)fout << ' ';else ge = 1;fout << c - i;}fout << endl; }
转载于:https://www.cnblogs.com/AbandonZHANG/archive/2012/07/18/2598415.html
USACO / Mother's Milk (DFS)相关推荐
- usaco Mother's Milk
问题:有三个容器A,B,C,只能从一个容器倒入另一容器,要么全部倒入,要么倒直到另一容器满.问容器A为0时,C可能的值 思路: 1.深度优先搜索 用State来表示int a[3],遍历从一容器到另两 ...
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
[USACO1.4.4]Mother's Milk 母亲的牛奶 Time Limit:10000MS Memory Limit:65536K Total Submit:42 Accepted:27 ...
- usaco shuttle puzzle(dfs剪枝)
这题一看我也以为找规律,然后无法下手之后又想到bfs最后看题解是用dfs大神dfs用的出神入化. 不过这题好像可以找规律. /* ID:jinbo wu TASK: shuttle LANG:C++ ...
- usaco street race(dfs)
一开始我觉得很麻烦但第一题好做由于数据较小直接每个点删后dfs就可以了,第二问我不知道如何判断有没有公共的道路,最后看别人的也挺简单的就是看分别从两条公路的起点开始dfs如果他们能到达同一点就代表有公 ...
- Riding the Fences USACO 3.3 欧拉路径(dfs+floodfill)
额,我是直接dfs的思路,但是到case 5过不去了,感觉是太慢了.然后网上看题解,题目原型就是欧拉路径, 欧拉路径存在的条件是 要么点的度都是偶数,要么只有两个点的度是奇数.如果是两个点的度是奇数, ...
- 母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- USACO-Section1.5 Mother's Milk (深度优先搜索)
2017-8-1 题目描述 给你三个容器,初始时前两个为空,最后一个为满,理想状态下,求当第一个容器 为空时,最后一个容器所剩的所有可能性 解答 (1)只能有牛奶的倒给未满的 (2)避免陷入死循环-& ...
- USACO健康的荷斯坦奶牛(DFS,二进制暴力枚举)
农夫约翰以拥有世界上最健康的奶牛而感到自豪. 奶牛想要保持健康,每天就要补充足量的多种维生素. 约翰为奶牛们准备了多种牛饲料,每种牛饲料中都富含奶牛所需的多种维生素,但是每种维生素的具体含量可能并不相 ...
- uscao Mother's Milk
bfs吧,我做过一题非常可乐跟这题很像.就是每次把牛奶在两个杯子中互倒,找到所有情况把a==0这个情况下的c保存起来(可能不同状态下的c相同用vis标记). /* ID: jinbo wu LANG: ...
- [USACO1.4]母亲的牛奶 Mother's Milk
https://www.luogu.org/problemnew/show/P1215 题解:模拟+BFS /* *@Author: STZG *@Language: C++ */ #include ...
最新文章
- MySQL跑在CentOS 6 和 7上的性能比较
- python数据分析年薪百万_如何成为一个年薪 50 万以上的数据分析师?
- Ado.net类与对象
- PostgreSQL处理xml数据初步
- SQL Server 2012 Managed Service Account
- Android之使用AchartEngineActivity引擎绘制柱状图、曲线图
- git提交时报错:Updates were rejected because the tip of your current branch is behind
- 剑指offer之求两个数之和(不能使用四则运算)
- 4918字,详解商品系统的存储架构设计
- java中怎么判断依赖关系,在Maven 2中,我如何知道依赖性来自哪个依赖?
- “三峡水怪”的真面目竟是这个!水怪:我不要面子的吗?
- linux安装java_安装和配置Linux上的Java运行环境
- 赢在AI,人工智能技术体验
- Atitit doc mng 文档管理总结目录1. 主要几大内容 12. 存储管理 22.1. 一般来说 ,文档存储在IM网盘note邮箱blog wiki等地 22.2. 文档格式与体
- 探索Perl的世界(更新到第十七章57集)
- 我的世界java版地狱_我的世界怎么去地狱_Minecraft地狱门建造教程 - 我的世界中文站...
- 树为什么能长这么高?
- 水溶性羧基化 CdSe/ZnS 量子的特点
- java 邮件 客户端_JAVA编写ESMTP客户端发送邮件代码
- AJAX JSON
热门文章
- 判断目标主机和自己是否是一个子网的方法
- 网传快手大幅度裁员30%
- 面试官:谈谈 Tomcat 架构及启动过程,我一脸懵逼。。
- v2ex热帖:面了几个程序员(3-5年),发现他们对MySQL的distinct关键字有误解......
- 网页版 Nginx 配置文件生成器发布,在线一健生成神器!不用愁了!
- 二货同事!写上千行的类!这样的代码让我生不如死!
- 漫画:80 端口争夺战
- tcp下载窗口太小的问题_面试官:换人!他连 TCP 这几个参数都不懂(二)
- Linux 理解平均负载
- PHP中H5棋牌开发的异常处理