Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
很好理解的一种写法,很适合刚学不久的人去理解,没有太复杂的语句#include<cstdio> int book[101][101]; struct asd { int k1; int k2; int o; int step; int xb; }ovo[100001]; int a,b,c; void dfs(int id); int main() { scanf("%d%d%d",&a,&b,&c); int head=1; int tail=1; int hhh=0; ovo[tail].k1=0; ovo[tail].k2=0; ovo[tail].o=0; ovo[tail].step=0; ovo[tail].xb=0; tail++; book[0][0]=1; while(head!=tail) { int kr=ovo[head].k1; int kl=ovo[head].k2; int p,q; for(int i=1;i<=6;i++) { if(i==1)//fill(1) { if(kr<a) { p=a; q=kl; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=a; ovo[tail].k2=kl; ovo[tail].o=1; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } else if(i==2)//fill(2); { if(kl<b) { p=kr; q=b; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=kr; ovo[tail].k2=b; ovo[tail].o=2; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } else if(i==3)//drop(1) { if(kr!=0) { p=0; q=kl; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=0; ovo[tail].k2=kl; ovo[tail].o=3; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } else if(i==4)//drop(2) { if(kl!=0) { p=kr; q=0; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=kr; ovo[tail].k2=0; ovo[tail].o=4; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } else if(i==5)//pour(1,2) { if(kr+kl>=b)//倒不完或者刚好倒完 { int u=0; u=b-kl; p=kr-u; q=b; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=p; ovo[tail].k2=q; ovo[tail].o=5; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } if(kr+kl<b)//倒不满 { p=0; q=kr+kl; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=p; ovo[tail].k2=q; ovo[tail].o=5; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } else if(i==6)//pour(2,1) { if(kr+kl>=a)//倒不完或者刚好倒完 { int u=0; u=a-kr; p=a; q=kl-u; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=p; ovo[tail].k2=q; ovo[tail].o=6; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } if(kr+kl<a)//倒不满 { p=kr+kl; q=0; if(book[p][q]==0) { book[p][q]=1; ovo[tail].k1=p; ovo[tail].k2=q; ovo[tail].o=6; ovo[tail].step=ovo[head].step+1; ovo[tail].xb=head; tail++; } } } if(p==c||q==c) { hhh=1; break; } } if(hhh==1) break; head++; } if(hhh==1) { printf("%d\n",ovo[tail-1].step); dfs(tail-1); } else printf("impossible\n"); getchar(); getchar(); return 0; } void dfs(int id) { if(id==1) { if(ovo[id].o==1) printf("FILL(1)\n"); else if(ovo[id].o==2) printf("FILL(2)\n"); else if(ovo[id].o==3) printf("DROP(1)\n"); else if(ovo[id].o==4) printf("DROP(2)\n"); else if(ovo[id].o==5) printf("POUR(1,2)\n"); else if(ovo[id].o==6) printf("POUR(2,1)\n"); } else { dfs(ovo[id].xb); if(ovo[id].o==1) printf("FILL(1)\n"); else if(ovo[id].o==2) printf("FILL(2)\n"); else if(ovo[id].o==3) printf("DROP(1)\n"); else if(ovo[id].o==4) printf("DROP(2)\n"); else if(ovo[id].o==5) printf("POUR(1,2)\n"); else if(ovo[id].o==6) printf("POUR(2,1)\n"); } return; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator