1.4 milk3 倒牛奶
2010-11-08 13:12
267 查看
广度优先搜索,用数组记录到达过的状态
Mother's Milk
Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numbers A, B, and C is an integer from 1 through 20, inclusive. Initially, buckets A and B are empty while bucket C is full of milk. Sometimes, FJ pours milk from one bucket to another until the second bucket is filled or the first bucket is empty. Once begun, a pour must be completed, of course. Being thrifty, no milk may be tossed out.
Write a program to help FJ determine what amounts of milk he can leave in bucket C when he begins with three buckets as above, pours milk among the buckets for a while, and then notes that bucket A is empty.
PROGRAM NAME: milk3
INPUT FORMAT
A single line with the three integers A, B, and C.
SAMPLE INPUT (file milk3.in)
8 9 10
OUTPUT FORMAT
A single line with a sorted list of all the possible amounts of milk that can be in bucket C when bucket A is empty.
SAMPLE OUTPUT (file milk3.out)
1 2 8 9 10
SAMPLE INPUT (file milk3.in)
2 5 10
SAMPLE OUTPUT (file milk3.out)
5 6 7 8 9 10
Mother's Milk
Farmer John has three milking buckets of capacity A, B, and C liters. Each of the numbers A, B, and C is an integer from 1 through 20, inclusive. Initially, buckets A and B are empty while bucket C is full of milk. Sometimes, FJ pours milk from one bucket to another until the second bucket is filled or the first bucket is empty. Once begun, a pour must be completed, of course. Being thrifty, no milk may be tossed out.
Write a program to help FJ determine what amounts of milk he can leave in bucket C when he begins with three buckets as above, pours milk among the buckets for a while, and then notes that bucket A is empty.
PROGRAM NAME: milk3
INPUT FORMAT
A single line with the three integers A, B, and C.
SAMPLE INPUT (file milk3.in)
8 9 10
OUTPUT FORMAT
A single line with a sorted list of all the possible amounts of milk that can be in bucket C when bucket A is empty.
SAMPLE OUTPUT (file milk3.out)
1 2 8 9 10
SAMPLE INPUT (file milk3.in)
2 5 10
SAMPLE OUTPUT (file milk3.out)
5 6 7 8 9 10
/* ID: xdzhbin1 LANG: C++ TASK: milk3 */ #include <fstream> using namespace std; int A,B,C; //三个杯子的容量 int min(int n1, int n2) //返回两个数中较小的一个 { return n1>n2 ? n2 : n1; } void pull(int a, int b, int c, bool m[][21][21], bool cup[21]) { if(a==0) cup[c] = true; //a为空时,记录c中的牛奶量 int vol; if(a>0&&b<B) //A向B倒 { vol = min(a,B-b); //能倒的牛奶量 if(!m[a-vol][b+vol][c]) //未到过倒完之后的状态 { m[a-vol][b+vol][c] = true; //记录这个状态 pull(a-vol,b+vol,c,m,cup); //从这个状态开始,广搜,倒牛奶 } } if(a>0&&c<C) //A向C倒 { vol = min(a,C-c); if(!m[a-vol][b][c+vol]) { m[a-vol][b][c+vol] = true; pull(a-vol,b,c+vol,m,cup); } } if(b>0&&a<A) //B向A倒 { vol = min(b,A-a); if(!m[a+vol][b-vol][c]) { m[a+vol][b-vol][c] = true; pull(a+vol,b-vol,c,m,cup); } } if(b>0&&c<C) //B向C倒 { vol = min(b,C-c); if(!m[a][b-vol][c+vol]) { m[a][b-vol][c+vol] = true; pull(a,b-vol,c+vol,m,cup); } } if(c>0&&a<A) //C向A倒 { vol = min(c,A-a); if(!m[a+vol][b][c-vol]) { m[a+vol][b][c-vol] = true; pull(a+vol,b,c-vol,m,cup); } } if(c>0&&b<B) //C向B倒 { vol = min(c,B-b); if(!m[a][b+vol][c-vol]) { m[a][b+vol][c-vol] = true; pull(a,b+vol,c-vol,m,cup); } } } int main() { ifstream in("milk3.in",ios::in); ofstream out("milk3.out",ios::out); bool milks[21][21][21]; //记录状态是否到达过,如milks[0][0][0]表示三个杯子中的牛奶都为零的状态 bool ccup[21]; //输出结果,也就是A空时,C中的牛奶量 int i,j,k; //初始化状态信息 for(i=0; i<21; i++) for(j=0; j<21; j++) for(k=0; k<21; k++) milks[i][j][k] = false; for(i=0; i<21; i++) ccup[i] = false; in>>A>>B>>C; //读入容量 int c = C; //C中的牛奶量 milks[0][0][c] = true; ccup[c] = true; pull(0,0,c,milks,ccup); bool space = false; for(i=0; i<21; i++) { if(ccup[i]) { if(space) out<<" "; out<<i; space = true; } } out<<endl; return 0; }
相关文章推荐
- [USACO1.4]母亲的牛奶Mother's Milk dfs
- 洛谷 1215 [USACO1.4]母亲的牛奶 Mother's Milk
- 洛谷P2852 [USACO06DEC]牛奶模式Milk Patterns
- USACO1.4 母亲的牛奶
- [Luogu2852][USACO06DEC]牛奶模式Milk Patterns
- 【贪心】Mixing Milk 混合牛奶 milk (Usaco_Training 1.3)
- 【搜索】洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk
- USACO-cha1-sec1.4 Mother's Milk
- Mother's Milk chapter 1.4
- section 1.4 milk3
- 洛谷P1215 [USACO1.4]母亲的牛奶 Mother's Milk
- SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
- milk3-section1.4
- 【模拟递规】Mother's Milk 母亲的牛奶 (Usaco_Training 1.4)
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
- 洛谷 P3093 [USACO13DEC]牛奶调度Milk Scheduling
- luogu P2744 [USACO5.3]量取牛奶Milk Measuring
- luogu2852 [USACO06DEC]牛奶模式Milk Patterns
- USACO1.4 母亲的牛奶 Mother's Milk
- USACO-Section1.4 milk3[深搜]