USACO-Section 1.4 Mother's Milk(BFS)
来源:互联网 发布:长江大学武汉校区知乎 编辑:程序博客网 时间:2024/06/06 05:30
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
今天USACO总挂,好烦人。。。
很简单的搜索题,深搜、宽搜都可以,感觉宽搜更容易写就用的宽搜,每次将未出现的状态压入队列中,出队列时判断是否合法,直至队列为空
/*ID: your_id_herePROG: milk3LANG: C++*/#include <cstdio>#include <cstring>#include <queue>#include <algorithm>using namespace std;struct Status { int a,b,c;}u,v;int a,b,c,t;bool vis[21][21][21],used[21],flag;queue<Status> q;void pour(int& sta,int& des,int full) {//将sta中的牛奶倒入des中,sta为空或者des满时不影响 t=full-des; if(sta<t) des+=sta,sta=0; else sta-=t,des+=t; if(!vis[v.a][v.b][v.c]) {//判断这个状态是否出现过 q.push(v); vis[v.a][v.b][v.c]=true; } v=u;}void BFS() { while(!q.empty()) q.pop(); u.a=u.b=0,u.c=c; q.push(u); vis[u.a][u.b][u.c]=true; while(!q.empty()) { v=u=q.front(); q.pop(); if(u.a==0)//是否符合题意 used[u.c]=true; pour(v.a,v.b,b); pour(v.b,v.a,a); pour(v.b,v.c,c); pour(v.c,v.a,a); pour(v.c,v.b,b); }}int main() { int i; freopen("milk3.in","r",stdin); freopen("milk3.out","w",stdout); while(3==scanf("%d%d%d",&a,&b,&c)) { memset(vis,false,sizeof(vis)); memset(used,false,sizeof(used)); BFS(); flag=false; for(i=0;i<=20;++i) if(used[i]) { if(flag) printf(" "); printf("%d",i); flag=true; } printf("\n"); } return 0;}
- USACO-Section 1.4 Mother's Milk(BFS)
- USACO Section 1.4 Mother's Milk 搜索
- USACO section 1.4.4 Mother's Milk
- USACO Section 1.4 Mother's Milk
- USACO Section 1.4 Mother's Milk
- USACO Section 1.4 Mother's Milk
- USACO Section 1.4 - Mother's Milk(DFS + 记忆化)
- USACO Mother's Milk(bfs)
- USACO Section 1.4 Mother's Milk - 输出错了好几次..
- Section 1.4 Mother's Milk
- USACO 1.4 - Mother's Milk(DFS)
- [usaco]1.4 Mother’s Milk
- USACO 1.4 Mother's Milk
- USACO 1.4 Mother's Milk
- USACO 1.4-Mother's Milk
- USACO 1.4 Mother's Milk
- USACO 1.4 Mother's Milk
- USACO-Section 1.4 Mother Milk[模拟][搜索]
- mysql 没有rowid 怎么实现根据rowid回表呢?
- 最高分是多少(华为16年研发试题)
- php难学吗?想学php、求大神带或给点教程我让我自学
- 修改PDF文档的方法
- Android学习心得(16) --- Dex文件结构实例解析(2)
- USACO-Section 1.4 Mother's Milk(BFS)
- ppt shortcut
- C移位操作
- about:Unable to connect to CUPS server localhost:631 - Connection refused
- 二叉树各种遍历的实现(递归、非递归、层次、高度和节点数目)
- 中国现在实际控制的领土面积?
- 工作一个月,发篇博客庆祝下
- java CookieUtil
- svn提交的时候强制写注释