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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk相关的知识,希望对你有一定的参考价值。

题目描述

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

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

输入输出格式

输入格式:

 

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:
[输入1]
8 9 10
[输入2]
2 5 10 
输出样例#1:
[输出1]
1 2 8 9 10 
[输出2]
5 6 7 8 9 10

说明

题目翻译来自NOCOW。

USACO Training Section 1.4

 

【分析】

很简单的搜索啦,各种情况都考虑到就行了,懒得写注释看起来可能有点麻烦。

 

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int a, b, c;
 5 bool vis[105][105], v[105];
 6 
 7 void dfs(int x, int y, int z) {
 8     if (x<0 || x>a || y<0 || y>b || z<0 || z>c || vis[x][y])
 9         return;
10     if (x==0)
11         v[z]=true;
12     vis[x][y]=true;
13     dfs(0,y+x,z);
14     dfs(0,y,z+x);
15     dfs(x+y,0,z);
16     dfs(x,0,z+y);
17     dfs(x+z,y,0);
18     dfs(x,y+z,0);
19     dfs(a,y,z-(a-x));
20     dfs(a,y-(a-x),z);
21     dfs(x-(b-y),b,z);
22     dfs(x,b,z-(b-y));
23     dfs(x-(c-z),y,c);
24     dfs(x,y-(c-z),c);
25 }
26 
27 int main() {
28     cin >> a >> b >> c;
29     dfs(0, 0, c);
30     for (int i=0;i<=100;++i)
31         if (v[i])
32             cout << i << " ";
33     cout << endl;
34 }

 

以上是关于洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions

洛谷 P1214 [USACO1.4]等差数列 Arithmetic Progressions