【USACO 1.4】Mother's Milk
/* TASK: milk3 LANG: C++ SOLVE: 倒水,dfs,枚举每一种倒法,ca[i][j]记录a和c桶的状态,因为总体积不变,故b的状态不需要记录。 */ #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int a,b,c; bool ca[30][30]; void dfs(int na,int nb,int nc){ // printf("%d %d %d\n",na,nb,nc); if(ca[na][nc])return; ca[na][nc]=1; dfs(max(na+nb-b,0),min(b,na+nb),nc);//a->b dfs(min(a,na+nb),max(na+nb-a,0),nc);//b->a dfs(max(na+nc-c,0),nb,min(c,na+nc));//a->c dfs(min(a,na+nc),nb,max(na+nc-a,0));//c->a dfs(na,max(nc+nb-c,0),min(c,nc+nb));//b->c dfs(na,min(nc+nb,b),max(nc+nb-b,0));//c->b } int main(){ freopen("milk3.in","r",stdin); freopen("milk3.out","w",stdout); scanf("%d%d%d",&a,&b,&c); dfs(0,0,c); int ok=0; for(int i=0;i<=c;i++) if(ca[0][i]){ if(ok) printf(" "); printf("%d",i); ok=1; } puts(""); return 0; }
┆凉┆暖┆降┆等┆幸┆我┆我┆里┆将┆ ┆可┆有┆谦┆戮┆那┆ ┆大┆始┆ ┆然┆
┆薄┆一┆临┆你┆的┆还┆没┆ ┆来┆ ┆是┆来┆逊┆没┆些┆ ┆雁┆终┆ ┆而┆
┆ ┆暖┆ ┆如┆地┆站┆有┆ ┆也┆ ┆我┆ ┆的┆有┆精┆ ┆也┆没┆ ┆你┆
┆ ┆这┆ ┆试┆方┆在┆逃┆ ┆会┆ ┆在┆ ┆清┆来┆准┆ ┆没┆有┆ ┆没┆
┆ ┆生┆ ┆探┆ ┆最┆避┆ ┆在┆ ┆这┆ ┆晨┆ ┆的┆ ┆有┆来┆ ┆有┆
┆ ┆之┆ ┆般┆ ┆不┆ ┆ ┆这┆ ┆里┆ ┆没┆ ┆杀┆ ┆来┆ ┆ ┆来┆