搜索-状态空间搜索
来源:互联网 发布:开淘宝店前期如何推广 编辑:程序博客网 时间:2024/05/15 20:56
//poj3414#include<iostream>#include<cstdio>#include<cctype>#include<cmath>#include<cstring>#include<algorithm>#include<set>#include<map>#include<vector>#include<queue>#include<deque>using namespace std;const int maxn=1005;struct T{ int a,b,c,d,e;}shz[maxn];T T1(int a,int b,int c,int d,int e){ T t; t.a=a,t.b=b,t.c=c,t.d=d,t.e=e; return t;}int mp[105][105];string str[7]={"FILL(1)","FILL(2)","DROP(1)","DROP(2)","POUR(1,2)","POUR(2,1)"};int main(){ int v1,v2,v3; cin>>v1>>v2>>v3; //1加满a,2加满b,3清空a,4清空b,5a到b,6b到a memset(mp,0,sizeof(mp)); shz[1]=T1(0,0,-1,-1,0); int f1=1,f2=1; int ans=0; while(f1<=f2){ if(!mp[v1][shz[f1].b]){ mp[v1][shz[f1].b]=1; shz[++f2]=T1(v1,shz[f1].b,f1,1,shz[f1].e+1); if(shz[f2].a==v3||shz[f2].b==v3){ ans=f2; break; } } if(!mp[shz[f1].a][v2]){ mp[shz[f1].a][v2]=1; shz[++f2]=T1(shz[f1].a,v2,f1,2,shz[f1].e+1); if(shz[f2].a==v3||shz[f2].b==v3){ ans=f2; break; } } if(!mp[0][shz[f1].b]){ mp[0][shz[f1].b]=1; shz[++f2]=T1(0,shz[f1].b,f1,3,shz[f1].e+1); } if(!mp[shz[f1].a][0]){ mp[shz[f1].a][0]=1; shz[++f2]=T1(shz[f1].a,0,f1,4,shz[f1].e+1); } int a1,b1; if(shz[f1].a<=v2-shz[f1].b) a1=0,b1=shz[f1].b+shz[f1].a; else{ a1=shz[f1].a-(v2-shz[f1].b); b1=v2; } if(!mp[a1][b1]){ mp[a1][b1]=1; shz[++f2]=T1(a1,b1,f1,5,shz[f1].e+1); if(shz[f2].a==v3||shz[f2].b==v3){ ans=f2; break; } } if(shz[f1].b<=v1-shz[f1].a) b1=0,a1=shz[f1].b+shz[f1].a; else{ b1=shz[f1].b-(v1-shz[f1].a); a1=v1; } if(!mp[a1][b1]){ mp[a1][b1]=1; shz[++f2]=T1(a1,b1,f1,6,shz[f1].e+1); if(shz[f2].a==v3||shz[f2].b==v3){ ans=f2; break; } } f1++; } vector<int> vect; if(ans){ cout<<shz[ans].e<<endl; int u=ans; while(shz[u].c!=-1){ vect.push_back(shz[u].d); u=shz[u].c; } for(int i=vect.size()-1;i>=0;i--) cout<<str[vect[i]-1]<<endl; } else printf("impossible\n");// return 0;}
0 0
- 搜索-状态空间搜索
- 状态空间搜索
- 农夫问题--状态空间搜索
- EOJ 1120 阅读理解/状态空间搜索
- 算法笔记(III) 状态空间搜索
- 状态空间搜索——八数码问题 Java实现
- UVa 11212 - Editing a Book <状态空间搜索+IDA*算法>
- uva-11212 - Editing a Book 状态空间搜索,IDA*
- 八人过河的状态空间搜索方法
- 迷宫问题(寻路)和状态空间搜索
- 八数码问题(状态空间搜索)--《算法入门经典》
- HDU 1495 非常可乐 bfs状态空间搜索
- UVA 10603 Fill(状态空间搜索,倒水问题)
- Solr 空间搜索配置
- solr 地理空间搜索
- Solr 空间搜索配置
- solr空间搜索
- 空间搜索,时间排序
- CentOS 7安装Etherpad(在线协作编辑)
- 算法设计与分析题目练习三:骑士旅游问题(回溯算法)
- 【Hibernate】Component映射
- 超详细图文讲解android studio导入第三方类库的方法
- 求链表中环的入口点
- 搜索-状态空间搜索
- luogu解题报告:HNOI2012永无乡
- sqlite应用1
- HTML标签之程序标签
- IO流_IO流概述及分类
- Linux下一个简单守护进程的实现 (Daemon)
- [stackoverflow翻译] “yield” 关键字有什么用?what-does-the-yield-keyword-do
- tegra_multimedia_api里的README
- sql语句中order by、group by和having的区别