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 母亲的牛奶的更多相关文章

  1. USACO 1.4.2 Mother's Mil 母亲的牛奶(DFS)

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

  2. 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 217通过 348提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 ...

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

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 题目描述 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满 ...

  4. 随手练——USACO 1.44 母亲的牛奶

    P1215 [USACO1.4]母亲的牛奶 Mother's Milk 洛谷 P1215:https://www.luogu.org/problemnew/show/P1215 解题思想:DFS 大一 ...

  5. 母亲的牛奶(milk)

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

  6. 母亲的牛奶(milk) (BFS)

    问题 A: 母亲的牛奶(milk) 时间限制: 1 Sec  内存限制: 64 MB提交: 14  解决: 8[提交][状态][讨论版] 题目描述 农民约翰有三个容量分别是A.B.C升的桶,A.B.C ...

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

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

  8. 洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk

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

  9. 洛谷 P1215 【[USACO1.4]母亲的牛奶 Mother's Milk】

    这道题\(DFS\)就好了,六种情况,\(ab,ac,ba,bc,ca,cb\),我们直接枚举就可.什么?这样不会结束?用一个\(vis\)数组判断走过没有就可以了.最后排序输出即可. \(code: ...

随机推荐

  1. 经纬转换成point的sql

    .UPDATE xx.zd_kakou_info t,(SELECT kakou_id, kakou_lon,kakou_lat,CONCAT('POINT(' , kakou_lon ,' ',ka ...

  2. windows下python3.6安装pycryto or crypto or pycryptodome与使用

    pycrypto,pycrytodome和crypto是一个东西,在很久以前,crypto在python上面的名字是pycrypto它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库: w ...

  3. List,Set和Map详解及其区别和他们分别适用的场景

    Java中的集合包括三大类,它们是Set(集).List(列表)和Map(映射),它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashS ...

  4. Cryptography Reloaded UVALive - 4353(BigInteger)

    写写式子就出来了方程.. 然后解方程..不过数很大..用Java就好啦.. 就不贴呃的代码了...贴别人的..https://blog.csdn.net/qq_15714857/article/det ...

  5. 【刷题】BZOJ 3514 Codechef MARCH14 GERALD07加强版

    Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...

  6. 【BZOJ1011】遥远的行星(???)

    题面 BZOJ 洛谷 题解 大概就是分个块,然后每块取平均数算贡献啥的. BZOJ上过不去??? #include<iostream> #include<cstdio> usi ...

  7. 【转】嵌入式Linux驱动面试题三道

    题一: Linux设备中字符设备与块设备有什么主要的区别? 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性.字符设备驱动程序通常至少实现open,cl ...

  8. BZOJ1113 [Poi2008]海报PLA 【分治 + 线段树】

    题目链接 BZOJ1113 题解 显然只与高有关,每次选择所有海报中最低的覆盖所有海报,然后分治两边 每个位置会被调用一次,复杂度\(O(nlogn)\) \(upd:\)智障了,,是一道\(O(n) ...

  9. 利用Array Prototype的方法来实现对dom集合的筛选、indexOf、map等功能

    <!DOCTYPE html><html> <head> <title>TODO supply a title</title> <me ...

  10. linux查看当前文件夹的大小

    1.(方法一)ls -lht会列出当前目录下每个文件的大小,同时也会给出当前目录下所有文件大小总和 [查看谬个文件的大小,] 2.(方法二)du -sh *也会列出当前文件夹下所有文件对应的大小 [把 ...