标签:style blog io color os sp for on div
#include<cstdio> #include<queue> #include<cstring> using namespace std; struct point { int a,b; int step; int way[110]; }; int aa,bb,cc; int v[110][110]; void bfs() { memset(v,0,sizeof(v)); queue<point>que; point now,next; now.a=0; now.b=0; now.step=0; v[0][0]=true; que.push(now); while (!que.empty()) { now=que.front(); que.pop(); if (now.a==cc || now.b==cc) { printf("%d\n",now.step); for (int i=1;i<=now.step;i++) { if (now.way[i]==1) printf("FILL(1)\n"); if (now.way[i]==2) printf("FILL(2)\n"); if (now.way[i]==3) printf("DROP(1)\n"); if (now.way[i]==4) printf("DROP(2)\n"); if (now.way[i]==5) printf("POUR(1,2)\n"); if (now.way[i]==6) printf("POUR(2,1)\n"); } return ; } //FILL A 111111111 if (now.a!=aa) { next=now; next.a=aa; next.b=now.b; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=1; que.push(next); } } //FILL B 2222222222 if (now.b!=bb) { next=now; next.a=now.a; next.b=bb; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=2; que.push(next); } } //DROP A 3333333333 if (now.a!=0) { next=now; next.a=0; next.b=now.b; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=3; que.push(next); } } //DROP B 444444444444 if (now.b!=0) { next=now; next.a=now.a; next.b=0; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=4; que.push(next); } } //pour(1,2) 5555555555555 if (now.a!=0) { if (now.a>=bb-now.b) //a 倒满 b { next=now; next.a=now.a-(bb-now.b); next.b=bb; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=5; que.push(next); } }else if (now.a<bb-now.b) //a 空了 没倒满 b { next=now; next.a=0; next.b=now.b+now.a; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=5; que.push(next); } } } //POUR(2,1) 6666666666666 if (now.b!=0) { if (now.b>=aa-now.a) { next=now; next.a=aa; next.b=now.b-(aa-now.a); if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=6; que.push(next); } }else if (now.b<aa-now.a) { next=now; next.a=now.a+now.b; next.b=0; if (!v[next.a][next.b]) { v[next.a][next.b]=1; next.step=now.step+1; next.way[next.step]=6; que.push(next); } } } } printf("impossible\n"); } int main() { scanf("%d%d%d",&aa,&bb,&cc); bfs(); return 0; }
标签:style blog io color os sp for on div
原文地址:http://www.cnblogs.com/NicoleLam/p/4150123.html