USACO中的搜索

来源:互联网 发布:淘宝商品优惠券二合一 编辑:程序博客网 时间:2024/06/06 05:51

Mother's Milk

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;const int n = 25;int flag[n][n];int re[n];int A,B,C;void DFS(int a,int b,int c){    if(a == 0)        re[c] = 1;    if(flag[a][b]) return;    flag[a][b] = 1;    if(a>0 && b<B)  //A向B倒, c不变        DFS(max(0, a+b-B), min(B, a+b), c);    if(a>0 && c<C)  //A向C倒,b不变        DFS(max(0, a+c-C), b, min(C, a+c));    if(b>0 && a<A)  //B向A倒,c不变        DFS(min(A, a+b), max(0, b+a-A), c);    if(b>0 && c<C)  //B向C倒,a不变        DFS(a, max(0, b+c-C), min(C, b+c));    if(c>0 && a<A)  //C向A倒,b不变        DFS(min(A, a+c), b, max(0, a+c-A));    if(c>0 && b<B)  //C向B倒,a不变        DFS(a, min(B, b+c), max(0, b+c-B));}int main(){    freopen("milk3.in","r",stdin);    freopen("milk3.out","w",stdout);    cin>>A>>B>>C;    memset(flag,0,sizeof(flag));    memset(re,0,sizeof(re));    DFS(0,0,C);    for(int i = 0; i < C; i++)    {        if(re[i])            cout<<i<<" ";    }    cout<<C<<endl;    return 0;}


0 0
原创粉丝点击