poj 1606 Jugs (BFS)
来源:互联网 发布:淘宝男裤店铺推荐 编辑:程序博客网 时间:2024/05/15 12:07
题目链接:http://poj.org/problem?id=1606
bfs+路径保存。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{ int a[2],f,pre;}q[1001*1001];int vis[1001][1001];int a,b,c;void way(int f){ if(f==1) printf("fill A\n"); else if(f==2) printf("fill B\n"); else if(f==3) printf("pour A B\n"); else if(f==4) printf("pour B A\n"); else if(f==5) printf("empty A\n"); else if(f==6) printf("empty B\n"); else if(f==7) printf("success\n");}void Print(int t){ if(t!=-1) { Print(q[t].pre); way(q[t].f); }}void bfs(){ int front=0,rear=1; int i,j; q[front].a[0]=q[front].a[1]=0; q[front].f=q[front].pre=-1; while(front!=rear) { if(q[front].a[1]==c) { q[rear].f=7; q[rear].pre=front; Print(rear); break; } if(q[front].a[0]==0&&!vis[a][q[front].a[1]]) { q[rear].a[0]=a; q[rear].a[1]=q[front].a[1]; q[rear].f=1; vis[a][q[front].a[1]]=1; q[rear++].pre=front; } if(q[front].a[1]==0&&!vis[q[front].a[0]][b]) { q[rear].a[0]=q[front].a[0]; q[rear].a[1]=b; q[rear].f=2; vis[q[front].a[0]][b]=1; q[rear++].pre=front; } if(q[front].a[0]!=0&&!vis[0][q[front].a[1]]) { q[rear].a[0]=0; q[rear].a[1]=q[front].a[1]; q[rear].f=5; q[rear++].pre=front; vis[0][q[front].a[1]]=1; } if(q[front].a[1]!=0&&!vis[q[front].a[0]][0]) { q[rear].a[1]=0; q[rear].a[0]=q[front].a[0]; q[rear].f=6; q[rear++].pre=front; vis[q[front].a[0]][0]=1; } if(q[front].a[0]>0) { int t=q[front].a[0]+q[front].a[1]; q[rear].a[0]=(t-b<0)?0:t-b; q[rear].a[1]=t<b?t:b; if(!vis[q[rear].a[0]][q[rear].a[1]]) { q[rear].f=3; vis[q[rear].a[0]][q[rear].a[1]]=1; q[rear++].pre=front; } } if(q[front].a[1]>0) { int t=q[front].a[0]+q[front].a[1]; q[rear].a[1]=(t-a<0)?0:t-a; q[rear].a[0]=t<a?t:a; if(!vis[q[rear].a[0]][q[rear].a[1]]) { q[rear].f=4; vis[q[rear].a[0]][q[rear].a[1]]=1; q[rear++].pre=front; } } front++; }}int main(){ while(scanf("%d%d%d",&a,&b,&c)!=EOF) { memset(vis,0,sizeof(vis)); bfs(); } return 0;}
- poj 1606 Jugs (BFS)
- POJ 1606 Jugs(BFS:找最短路径并输出)
- poj 1606 Jugs(广搜BFS+路径输出)
- poj 1606 Jugs
- POJ 1606 Jugs
- poj 1606 Jugs
- POJ 1606 Jugs
- poj 1606 Jugs
- POJ-1606 Jugs
- poj 1606 Jugs and poj 3414 Pots(数组模拟BFS) uva 571 (数论)
- POJ 1606 Jugs 倒水问题
- poj 1606 || hdu 1415 Jugs
- ZOJ 1005 Jugs 【BFS】
- Jugs - UVa 571 bfs
- zoj 1005 Jugs BFS
- ZOJ 1005 POJ 1606 Jugs /数论
- POJ 1606 && HDU 1415 Jugs(机智)
- POJ 1606 Jugs 已被翻译
- printf 与 fprintf函数的区别
- 【阅读笔记之十二】《DIRECTX.9.0.3D游戏开发编程基础》:网格(二)浅话X文件和渐进网格
- C# 4.0完全参考手册_PDF 电子书
- 大杂烩2之乱七八糟
- win32 线程优先级
- poj 1606 Jugs (BFS)
- 通信之美--写在前面
- Apache Commons-logging使用实例
- armcc
- 关于RTOS发展的思考
- poj 1979 [ BFS 32ms 数据范围的事,可能造成 dfs 比 bfs 快了! ]
- java程序基础操作MySQL数据库
- C# 2008编程参考手册_PDF 电子书
- php学习笔记(十五)验证码类的编写和使用