ZOJ 1005 Jugs (DFS)
2011-06-24 11:31
337 查看
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1005
#include <stdio.h> #include <string.h> #include <vector> #include <iostream> using namespace std; int ca, cb, n; bool status[1001][1001]; vector<string> v; bool fun(int a, int b) { if(a == n || b == n) { v.push_back("success"); return true; } if(status[a][b] == true)return false; status[a][b] = true; if(a < ca && b < cb) { if(a > 0) // A->B { if(a + b <= cb) { if(fun(0, a + b)) v.push_back("pour A B"); return true; } } else { if(fun(a + b - cb, cb)) v.push_back("pour A B"); return true; } if(b > 0) // B->A { if(a + b <= ca) { if(fun(a + b, 0)) { v.push_back("pour B A"); return true; } } else { if(fun(ca, a + b - ca)) v.push_back("pour B A"); return true; } } // empty A if(fun(0, b)) { v.push_back("empty A"); return true; } // empty B if(fun(a, 0)) { v.push_back("empty B"); return true; } if(fun(ca, b)) // FA { v.push_back("fill A"); return true; } if(fun(a, cb)) // FB { v.push_back("fill B"); return true; } } else if(a < ca && b == cb) { // B->A if(a + b <= ca) { if(fun(a + b, 0)) { v.push_back("pour B A"); return true; } } else { if(fun(ca, a + b - ca)) v.push_back("pour B A"); return true; } // empty A if(fun(0, b)) { v.push_back("empty A"); return true; } // empty B if(fun(a, 0)) { v.push_back("empty B"); return true; } if(fun(ca, cb)) // FA { v.push_back("fill A"); return true; } } else if(a == ca && b < cb) // A->B { if(a + b <= cb) { if(fun(0, a + b)) { v.push_back("pour A B"); return true; } } else { if(fun(a + b - cb, cb)) v.push_back("pour A B"); return true; } // empty A if(fun(0, b)) { v.push_back("empty A"); return true; } // empty B if(fun(a, 0)) { v.push_back("empty B"); return true; } if(fun(ca, cb)) // FB { v.push_back("fill B"); return true; } } return false; } int main() { while(scanf("%d %d %d", &ca, &cb, &n) != EOF) { v.clear(); memset(status, false, sizeof(status)); fun(0, 0); for(int i = v.size() - 1; i >= 0; i--) cout << v[i] << endl; } }
相关文章推荐
- ZOJ--1005:Jugs(dfs)
- [ZOJ 1005] Jugs (dfs倒水问题)
- ZOJ-1005-Jugs【BFS+记录路径】
- ZOJ1005 Jugs
- ZOJ 1005 Jugs
- zoj 1005 Jugs
- zoj 1005 Jugs
- zoj 1005 jugs
- ZOJ 1005 Jugs(简单题)
- ZOJ1005 Jugs
- 浙江大学zoj 1005 jugs解法
- bfs ZOJ 1005 Jugs
- ZOJ 1005 Jugs 【BFS】
- zoj 1005 Jugs(数学做法,还可以用BFS(我不会))
- ZOJ 1005 Jugs(模拟 special judge,也可以BFS)
- zoj 1005 Jugs
- ZOJ Problem Set - 1005 Jugs
- zoj 1005Jugs
- ZOJ 1005 Jugs
- ZOJ 1005 Jugs