USCAO-Section 1.4 Mother's Milk
来源:互联网 发布:gps转百度地图坐标 js 编辑:程序博客网 时间:2024/06/05 04:41
原题:
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.
题意:
有ABC三个容器,其容积不同但都小于等于20;一开始C是满的,可进行的操作有两种:1、将一个容器的牛奶全部倒入另一个容器(另一个容器可以承受)2、将一个容器的牛奶倒入另一个容器直到那个容器满了
求在进行操作后,C中所剩的牛奶的数量的可取值,全部从小到大输出。
题解:
首先想到的就是模拟六种操作 a->b a->c,b->a b->c,c->a c->b;每种都有两种情况,一个是自己倒空,一个是将对方倒满,使用深度搜索模拟倒的情况,在每一次递归前判断三个容器中各自的牛奶量的情况是否已经出现过,出现过就return;没有就判断C容器的量是否出现过,没有就加入记录,然后继续往下模拟操作。
代码如下:
/*ID:newyear111PROG: milk3LANG: C++*/#include <iostream>#include <fstream>#include <string>#include<algorithm>using namespace std;const int N=25;int vis[N][N][N];//记录ABC的状态以去重int ans[N];//记录答案int A,B,C; void dfs(int a,int b,int c){ if(vis[a][b][c]) return; vis[a][b][c]=1; if(!a&&!ans[c]) { ans[c]=1; } //模拟六种情况 //a->b if(a>=B-b) dfs(a-B+b,B,c); else dfs(0,a+b,c); //a->c if(a>=C-c) dfs(a-C+c,b,C); else dfs(0,b,c+a); //b->a if(b>=A-a) dfs(A,b-A+a,c); else dfs(a+b,0,c); //b->c if(b>=C-c) dfs(a,b-C+c,C); else dfs(a,0,b+c); //c->a if(c>=A-a) dfs(A,b,c-A+a); else dfs(a+c,b,0); //c->b if(c>=B-b) dfs(a,B,c-B+b); else dfs(a,c+b,0);} int main(){ ifstream fin("milk3.in"); ofstream fout("milk3.out"); fin>>A>>B>>C; dfs(0,0,C); for(int i=0;i<C;i++){ if(ans[i]) fout<<i<<" "; } fout<<C<<endl; fin.close(); fout.close(); return 0;}
- USCAO-Section 1.4 Mother's Milk
- USCAO section Mother's Milk(搜索)
- uscao Mother's Milk
- Section 1.4 Mother's Milk
- 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 - 输出错了好几次..
- USACO Section 1.4 - Mother's Milk(DFS + 记忆化)
- USACO-Section 1.4 Mother's Milk(BFS)
- 1.4Mother's Milk
- 1.4.4 Mother's Milk
- [usaco]1.4 Mother’s Milk
- 1.4.4---Mother's Milk
- USACO 1.4 Mother's Milk
- USACO 1.4 Mother's Milk
- CodeForces 砝码称重
- 清明笔记
- 面试题31连续子数组的最大和
- UNIX环境高级编程—存储映射IO(mmap函数)
- 仿IOS搜索框
- USCAO-Section 1.4 Mother's Milk
- Linux学习基础篇(三)
- JAVA1.1 JAVA概述
- maven pom简单入门
- 读取文件内容并进行大小写转换
- python编辑器安装——sublime text3
- 欧几里得算法
- MemoryBarrier方法
- OO的五大原则:SRP、OCP、LSP、DIP、ISP