hdu4490 Mad Veterinarian(bfs) (二)

2014-11-23 19:22:32 · 作者: · 浏览: 11
+f[0].b; s[w].c=s[t].c+f[0].c; s[w].f=t; s[w].o='A'; if(s[w].a0) { s[w].b=s[t].b+f[1].b-1; s[w].a=s[t].a+f[1].a; s[w].c=s[t].c+f[1].c; s[w].f=t; s[w].o='B'; if(s[w].a0) { s[w].c=s[t].c+f[2].c-1; s[w].b=s[t].b+f[2].b; s[w].a=s[t].a+f[2].a; s[w].f=t; s[w].o='C'; if(s[w].a=f[0].a&&s[t].b>=f[0].b&&s[t].c>=f[0].c) { s[w].a=s[t].a-f[0].a+1; s[w].b=s[t].b-f[0].b; s[w].c=s[t].c-f[0].c; s[w].f=t; s[w].o='a'; if(s[w].a=f[1].a&&s[t].b>=f[1].b&&s[t].c>=f[1].c) { s[w].b=s[t].b-f[1].b+1; s[w].a=s[t].a-f[1].a; s[w].c=s[t].c-f[1].c; s[w].f=t; s[w].o='b'; if(s[w].a=f[2].a&&s[t].b>=f[2].b&&s[t].c>=f[2].c) { s[w].c=s[t].c-f[2].c+1; s[w].b=s[t].b-f[2].b; s[w].a=s[t].a-f[2].a; s[w].f=t; s[w].o='c'; if(s[w].a
0;j--) { cou[j]=s[i].o; i=s[i].f; } cou[99]='\0'; printf("%d ",98-j); puts(cou+j+1); } else puts("NO SOLUTION"); } } return 0; } #include #include #define M 8 struct node { int a,b,c,f; char o; }f[4],s[1000],start,end; int visit[10][10][10]; int bfs() { int t=0,w=1; memset(visit,0,sizeof(visit)); visit[s[t].a][s[t].b][s[t].c]=1; s[0].f=-1; while(t0) { s[w].a=s[t].a+f[0].a-1; s[w].b=s[t].b+f[0].b; s[w].c=s[t].c+f[0].c; s[w].f=t; s[w].o='A'; if(s[w].a0) { s[w].b=s[t].b+f[1].b-1; s[w].a=s[t].a+f[1].a; s[w].c=s[t].c+f[1].c; s[w].f=t; s[w].o='B'; if(s[w].a0) { s[w].c=s[t].c+f[2].c-1; s[w].b=s[t].b+f[2].b; s[w].a=s[t].a+f[2].a; s[w].f=t; s[w].o='C'; if(s[w].a=f[0].a&&s[t].b>=f[0].b&&s[t].c>=f[0].c) { s[w].a=s[t].a-f[0].a+1; s[w].b=s[t].b-f[0].b; s[w].c=s[t].c-f[0].c; s[w].f=t; s[w].o='a'; if(s[w].a=f[1].a&&s[t].b>=f[1].b&&s[t].c>=f[1].c) { s[w].b=s[t].b-f[1].b+1; s[w].a=s[t].a-f[1].a; s[w].c=s[t].c-f[1].c; s[w].f=t; s[w].o='b'; if(s[w].a=f[2].a&&s[t].b>=f[2].b&&s[t].c>=f[2].c) { s[w].c=s[t].c-f[2].c+1; s[w].b=s[t].b-f[2].b; s[w].a=s[t].a-f[2].a; s[w].f=t; s[w].o='c'; if(s[w].a0;j--) { cou[j]=s[i].o; i=s[i].f; } cou[99]='\0'; printf("%d ",98-j); puts(cou+j+1); } else puts("NO SOLUTION"); } } return 0; }