POJ3414 Pots【倒水问题+BFS】
2018-03-21 23:43
351 查看
#include<stdio.h> #include<string.h> #include<iostream> #include<vector> #include<set> #include<map> #include<queue> #include<ctype.h> #include<stack> #include<math.h> #include <string> #include<algorithm> using namespace std; typedef unsigned long long ULL; const int MAXN = 100; int a, b, c; bool notvist[MAXN+1][MAXN+1]; struct node { int a, b, level; int path[MAXN+1]; int plen; }; string path[] = { "FILL(1)" ,"FILL(2)" ,"DROP(1)" ,"DROP(2)" ,"POUR(1,2)" ,"POUR(2,1)" }; void print(int l,int p[],int n) { cout<<l<<endl; for(int i=0;i<n;i++) cout<<path[p[i]]<<endl; } void bfs() { queue<node> q; memset(notvist,true,sizeof(notvist)); node fro; fro.a=0; fro.b=0; fro.level=0; fro.plen=0; memset(fro.path,0,sizeof(fro.path)); q.push(fro); notvist[fro.a][fro.b] = false; while(!q.empty()) { fro=q.front(); q.pop(); if(fro.a==c||fro.b==c) { print(fro.level,fro.path,fro.plen); 4000 return; } node v; v=fro; // cout<<v.b<<" "<<fro.b<<endl; v.level++; v.plen++; if(fro.a<a) { v.a=a; v.b=fro.b; if(notvist[v.a][v.b]) { v.path[fro.plen]=0; q.push(v); notvist[v.a][v.b]=false; } } // cout<<v.b<<" "<<fro.b<<endl<<endl; if(fro.b<b) { v.b=b; v.a=fro.a; if(notvist[v.a][v.b]) { v.path[fro.plen]=1; q.push(v); notvist[v.a][v.b]=false; } } if(fro.a!=0) { v.a=0; v.b=fro.b; if(notvist[v.a][v.b]) { v.path[fro.plen]=2; q.push(v); notvist[v.a][v.b]=false; } } if(fro.b!=0) { v.b=0; v.a=fro.a; if(notvist[v.a][v.b]) { v.path[fro.plen]=3; q.push(v); notvist[v.a][v.b]=false; } } if(fro.a&&(fro.b<b)) { if(fro.a>(b-fro.b)) { v.a=fro.a-(b-fro.b); v.b=b; } else { v.a=0; v.b=fro.a+fro.b; } if(notvist[v.a][v.b]) { v.path[fro.plen]=4; q.push(v); notvist[v.a][v.b]=false; } } if(fro.b&&(fro.a<a)) { if(fro.b>(a-fro.a)) { v.b=fro.b-(a-fro.a); v.a=a; } else { v.b=0; v.a=fro.a+fro.b; } if(notvist[v.a][v.b]) { v.path[fro.plen]=5; q.push(v); notvist[v.a][v.b]=false; } } } cout << "impossible" << endl; } int main() { ios::sync_with_stdio(false);cin.tie(0); while(cin>>a>>b>>c) { bfs(); } return 0; } /* 1 3 3 S.# #E# ### */
相关文章推荐
- POJ 3414 Pots【bfs模拟倒水问题】
- POJ 3414 Pots【bfs模拟倒水问题】
- poj 3414 pots (bfs 倒水问题)
- POJ 3414 Pots(BFS倒水问题)
- POJ 3414 Pots【bfs模拟倒水问题】
- poj 3414 Pots [bfs - 倒水问题]
- poj 3414 Pots [bfs - 倒水问题]
- POJ 3414-Pots(BFS-模拟倒水)
- POJ 3414 - Easy BFS - 六入口倒水问题
- poj 3414 倒水问题 bfs
- POJ 3414 Pots(BFS 倒水)
- POJ 3414 Pots【BFS水】
- poj 3414 Pots【bfs+回溯路径 正向输出】
- poj-3414-Pots【BFS+记录路径】
- POJ3414 Pots【倒水问题+BFS】
- poj 3414 pots -- 最爱的 BFS (记录路径)
- POJ 3414 Pots(bfs)
- HDU 1495 非常可乐(bfs)|POJ 3414 Pots(bfs+打印路径)
- BFS-POJ-3414-Pots
- poj 3414 Pots(bfs)