就是不断搜索倒牛奶的过程..用一个三维数组来判重就可以了....
恶心的输入或者是我不适应~~末尾多了空格报错...每个文件只有一组数据...输出一行后还必须打个\n....呃...
Program:
/* ID: zzyzzy12 LANG: C++ TASK: milk3 */ #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue> using namespace std; int ans[201],num,A,B,C; bool f[21][21][21]; void search(int a,int b,int c) { if (f[a][b][c]) return; f[a][b][c]=true; if (!a) { num++; ans[num]=c; } if (a+b>B) search(a-B+b,B,c); else search(0,a+b,c); if (a+c>C) search(a-C+c,b,C); else search(0,b,a+c); if (b+a>A) search(A,b-A+a,c); else search(b+a,0,c); if (b+c>C) search(a,b-C+c,C); else search(a,0,c+b); if (c+a>A) search(A,b,c-A+a); else search(a+c,b,0); if (c+b>B) search(a,B,c-B+b); else search(a,c+b,0); } int main() { freopen("milk3.in","r",stdin); freopen("milk3.out","w",stdout); memset(f,false,sizeof(f)); num=0; scanf("%d%d%d",&A,&B,&C); search(0,0,C); sort(ans+1,ans+1+num); for (int i=1;i<num;i++) printf("%d ",ans[i]); printf("%d\n",ans[num]); return 0; }