USACO Mother's Milk
2015-02-24 10:53
295 查看
【题意】
给定3个牛奶桶深度分别为A,B,C,开始时深度为A,B的桶空,C的装满。每次从一个桶往另一个倒牛奶,只能让另一个倒满或者这个倒空。求但A的桶空时,C的牛奶量有多少,输出所有可能的情况。0<=A,B,C<=20
【分析】暴搜
【代码】
给定3个牛奶桶深度分别为A,B,C,开始时深度为A,B的桶空,C的装满。每次从一个桶往另一个倒牛奶,只能让另一个倒满或者这个倒空。求但A的桶空时,C的牛奶量有多少,输出所有可能的情况。0<=A,B,C<=20
【分析】暴搜
【代码】
/* ID:y2007031 PROG:milk3 LANG:C++ */ #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int A,B,C; int f[40][40][40],v[40],p[40]; int min(int i,int j) { return i<j?i:j; } void DFS(int a,int b,int c) { if (f[a][b][c]) return; f[a][b][c]=1; int pour=min(a,B-b); DFS(a-pour,b+pour,c); pour=min(a,C-c); DFS(a-pour,b,c+pour); pour=min(b,A-a); DFS(a+pour,b-pour,c); pour=min(b,C-c); DFS(a,b-pour,c+pour); pour=min(A-a,c); DFS(a+pour,b,c-pour); pour=min(B-b,c); DFS(a,b+pour,c-pour); } int main(void) { freopen("milk3.in","r",stdin); freopen("milk3.out","w",stdout); scanf("%d%d%d",&A,&B,&C); DFS(0,0,C); for (int i=0;i<=C;i++) if (f[0][C-i][i]) p[++p[0]]=i; for (int i=1;i<p[0];i++) printf("%d ",p[i]); printf("%d\n",p[p[0]]); return 0; }
相关文章推荐
- USACO Mother's Milk, Number Triangles
- USACO Section 1.4 Mother's Milk - 输出错了好几次..
- USACO1.4.2 Mother's Milk (milk3)
- USACO Mother's Milk
- USACO Section 1.4 Mother's Milk
- Usaco 1.4.4 母亲的牛奶(Mother's Milk)
- [USACO 1.4.4] Mother's Milk
- USACO1.4.2 Mother's Milk (milk3)
- USACO:Mother's Milk
- 【USACO】Mother's Milk(搜索)
- USACO-Section 1.4 Mother's Milk(BFS)
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
- USACO 1.4.2 Mother's Milk
- Mother's Milk(usaco)
- Mother's Milk
- Mother's Milk
- USCAO section Mother's Milk(搜索)
- Section 1.4 Mother's Milk
- Mother's Milk母亲的牛奶
- 1.4Mother's Milk