Mother's Mil 母亲的牛奶
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 刚开始以为这道题是对所有情况进行分类,发现有几个情况是很难直接找出来的,是一个循环的过程。
后来听大佬说这个题用DFS做,当时有些蒙,,,咋用DFS 静下心来想一想,发现是有规律的,A桶只能到给B桶和C桶,B桶C桶同理。也就是说,用递归把所有可能的组合方式都跑一遍,找出其中满足条件的C桶的容量。(感觉会T,会爆栈的呀) 对于固定的方式,可用DFS搜索全部状态。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<deque>
#include<map>
#include<iostream>
using namespace std;
typedef long long LL;
const double pi=acos(-1.0);
const double e=exp();
const int N = ; int x,y,z,cnt=;
int check[][][],ans[]; bool cmp(int a,int b)
{
return a<b;
}
void DFS(int a,int b,int c)
{
if(a!=&&b!=&&c!=z)
check[a][b][c]=;
if(a==&&check[a][b][c]!=)
{
check[a][b][c]=;
ans[cnt++]=c;
} if(a)
{
if(b!=y)
{
if(a>=(y-b))
if(check[a-(y-b)][y][c]==)
DFS(a-(y-b),y,c);
if(a<(y-b))
if(check[][b+a][c]==)
DFS(,b+a,c);
}
if(c!=z)
{
if(a>=(z-c))
if(check[a-(z-c)][b][z]==)
DFS(a-(z-c),b,z);
if(a<(z-c))
if(check[][b][c+a]==)
DFS(,b,c+a);
}
}
if(b)
{
if(a!=x)
{
if(b>=(x-a))
if(check[x][b-(x-a)][c]==)
DFS(x,b-(x-a),c);
if(b<(x-a))
if(check[a+b][][c]==)
DFS(a+b,,c);
}
if(c!=z)
{
if(b>=(z-c))
if(check[a][b-(z-c)][z])
DFS(a,b-(z-c),z);
if(b<(z-c))
if(check[a][][c+b])
DFS(a,,c+b);
}
}
if(c)
{
if(a!=x)
{
if(c>=(x-a))
if(check[x][b][c-(x-a)]==)
DFS(x,b,c-(x-a));
if(c<(x-a))
if(check[a+c][b][]==)
DFS(a+c,b,);
}
if(b!=y)
{
if(c>=(y-b))
if(check[a][y][c-(y-b)]==)
DFS(a,y,c-(y-b));
if(c<(y-b))
if(check[a][b+c][]==)
DFS(a,b+c,);
}
}
} int main()
{
int i,p,j,n;
scanf("%d%d%d",&x,&y,&z);
check[][][z]=;
ans[]=z;
DFS(,,z);
sort(ans,ans+cnt,cmp);
printf("%d",ans[]);
for(i=;i<cnt;i++)
printf(" %d",ans[i]);
putchar('\n');
return ;
}
Mother's Mil 母亲的牛奶的更多相关文章
- USACO 1.4.2 Mother's Mil 母亲的牛奶(DFS)
Description 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装 ...
- 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 217通过 348提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 ...
- P1215 [USACO1.4]母亲的牛奶 Mother's Milk
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...
- 随手练——USACO 1.44 母亲的牛奶
P1215 [USACO1.4]母亲的牛奶 Mother's Milk 洛谷 P1215:https://www.luogu.org/problemnew/show/P1215 解题思想:DFS 大一 ...
- 母亲的牛奶(milk)
母亲的牛奶(milk) 题目描述 农民约翰有三个容量分别是A.B.C升的桶,A.B.C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另一个桶中,直 ...
- 母亲的牛奶(milk) (BFS)
问题 A: 母亲的牛奶(milk) 时间限制: 1 Sec 内存限制: 64 MB提交: 14 解决: 8[提交][状态][讨论版] 题目描述 农民约翰有三个容量分别是A.B.C升的桶,A.B.C ...
- luogu P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- 洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk
题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,农民把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了 ...
- 洛谷 P1215 【[USACO1.4]母亲的牛奶 Mother's Milk】
这道题\(DFS\)就好了,六种情况,\(ab,ac,ba,bc,ca,cb\),我们直接枚举就可.什么?这样不会结束?用一个\(vis\)数组判断走过没有就可以了.最后排序输出即可. \(code: ...
随机推荐
- D3.js 入门学习(二) V4的改动
//d3.scan /* 新的d3.scan方法对数组进行线性扫描,并根据指定的比较函数返回至少一个元素的索引. 这个方法有点类似于d3.min和d3.max. 而d3.scan可以得到极值的索引而不 ...
- 如何修改eclipse下注释的颜色
修改注释颜色:window -- preferences -- java --editor --syntax coloring -- comments 中的前两个就是修改注释颜色的.点击右边的colo ...
- [转帖 cnblog 的news ]技术实力超群的Netflix,为何没有CTO
技术实力超群的Netflix,为何没有CTO https://news.cnblogs.com/n/581824/ 投递人 itwriter 发布于 2017-11-05 16:12 评论(2) 有1 ...
- 反爬虫之JS反编译:PyExecJS
PyExecJS是python运行JavaScript代码的包 安装: pip install PyExecJS (或者easy_install PyExecJS) 依赖: 需要有执行JS的程序, ...
- app流畅度测试--使用手机自带功能
1.进入开发者选项,在“监控”选项卡找到“GPU呈现模式分析”的选项 2.开启后,即可以条形图和线形图的方式显示系统的界面相应速度 3.那么要如何根据曲线判断系统是否流畅呢?实际上这个曲线表达的是GP ...
- echarts 地图 离线json包分享
最近,项目中需要用到地图,由于项目的特殊性,只能使用内网获取数据. 然而,echarts官网上的离线地图包(http://echarts.baidu.com/download-map.html)早在一 ...
- java 常量 因为常量不依赖对象 所以一般都会将常量设置为 类属性
- BZOJ5302 HAOI2018奇怪的背包(动态规划)
由裴蜀定理,子集S有解当且仅当gcd(S,P)|w. 一个显然的dp是设f[i][j]为前i个数gcd为j的选取方案.注意到这里的gcd一定是P的约数,所以状态数是n√P的.然后可以通过这个得到gcd ...
- 题解 P1208 【[USACO1.3]混合牛奶 Mixing Milk】
其实根本没有一楼dalao描述的那么麻烦...... 一楼dalao其实吧,采用了一种纯属模拟的方式. 下面是我的大跃进思想 但是一个个地做减法是不是太慢了?(大跃进思想) 于是我们是不是可以直接进行 ...
- Oracle 双字段过滤
白名单:数据 id , g_id,sys_id 1,2,3 1,2,4 黑名单:数据 id , g_id,sys_id b,2,3 结果 1,2,4 select t1.* ...