USACO 1.4 Mother's Milk
2016-11-02 14:46
465 查看
解题思路
较为经典的搜索,状态为A,B,C中的量,初始为(0,0,C),有六种状态转移方式,用递归即可完成所有方案;
解题要点
1.递归函数,三个变量分别为A中的量 a , B中的量 b ,C中的量 c 。六种转移方式(c->a , c->b, a->b, a->c, b->a, b->c),如果满足条件则进行递归,如果a为0,则找到一组解,记录下来(最后要排序输出)。
3.倾倒的操作,可以用引用操作,自己写一个函数来完成
较为经典的搜索,状态为A,B,C中的量,初始为(0,0,C),有六种状态转移方式,用递归即可完成所有方案;
解题要点
1.递归函数,三个变量分别为A中的量 a , B中的量 b ,C中的量 c 。六种转移方式(c->a , c->b, a->b, a->c, b->a, b->c),如果满足条件则进行递归,如果a为0,则找到一组解,记录下来(最后要排序输出)。
void dg(int a,int b,int c) { if(a==0) { cont++; ans[cont]=c; } if(c>0) { if(a<A) { int cc=c,aa=a; pull(cc,aa,A); if(book[aa][b][cc]==0) { book[aa][b][cc]=1; dg(aa,b,cc); } } if(b<B) { int cc=c,bb=b; pull(cc,bb,B); if(book[a][bb][cc]==0) { book[a][bb][cc]=1; dg(a,bb,cc); } } } if(a>0) { if(c<C) { int cc=c,aa=a; pull(aa,cc,C); if(book[aa][b][cc]==0) { book[aa][b][cc]=1; dg(aa,b,cc); } } if(b<B) { int aa=a,bb=b; pull(aa,bb,B); if(book[aa][bb][c]==0) { book[aa][bb][c]=1; dg(aa,bb,c); } } } if(b>0) { if(a<A) { int bb=b,aa=a; pull(bb,aa,A); if(book[aa][bb][c]==0) { book[aa][bb][c]=1; dg(aa,bb,c); } } if(c<C) { int cc=c,bb=b; pull(bb,cc,C); if(book[a][bb][cc]==0) { book[a][bb][cc]=1; dg(a,bb,cc); } } } return ; }
3.倾倒的操作,可以用引用操作,自己写一个函数来完成
void pull(int& x,int& y,int& Y) { int k=Y-y; if(k>x) { y=y+x; x=0; return ; } y=Y; x=x-k; return; }
相关文章推荐
- USACO-Section1.4 Mother's Milk
- 【模拟递规】Mother's Milk 母亲的牛奶 (Usaco_Training 1.4)
- 【搜索】洛谷 P1215 [USACO1.4]母亲的牛奶 Mother's Milk
- USACO-Section 1.4 Mother's Milk(BFS)
- USACO-Section1.4 Mother's Milk
- USACO 1.4 Mother's Milk
- USACO Section 1.4 Mother's Milk - 输出错了好几次..
- Mother's Milk_usaco1.4_bfs
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
- USACO Section 1.4 Mother's Milk
- USACO Section 1.4 Mother's Milk 搜索
- USACO 1.4 Mother's Milk (枚举 + DFS)
- USACO 1.4-Mother's Milk
- [USACO-Training 1.4]Mother's Milk
- [usaco]1.4 Mother’s Milk
- USACO-Section1.4 Mother's Milk [搜索]
- USACO Section 1.4 - Mother's Milk(DFS + 记忆化)
- USACO1.4 母亲的牛奶 Mother's Milk
- USACO 1.4 Mother's Milk (milk3)
- USACO 1.4 - Mother's Milk(DFS)