九度OJ;题目1147:Jugs
来源:互联网 发布:12月份php好找工作吗 编辑:程序博客网 时间:2024/05/18 12:02
原题链接地址:http://ac.jobdu.com/problem.php?pid=1147
转载请注明本文链接:http://blog.csdn.net/yangnanhai93/article/details/42016353
BFS很简单的思想,但是注意剪枝,因为很多会重复,比如,不断的empty,这个重复很严重,所以很有必要去除重复,即记录1000 *1000的矩阵,保证对想通的a,b不重复计算
#include <stdio.h>#include <queue>#include <string>#include <memory.h>using namespace std; string op[6]={"fill A","fill B","pour B A","pour A B","empty A","empty B"};bool visited[1001][1001];struct Node{ int left,right; vector<int> op;};void Cal(int a,int b,int q){ queue<Node> result; Node first,second; first.left=0; first.right=0; result.push(first); memset(visited,0,sizeof(visited)); while(!result.empty()) { first=result.front(); result.pop(); for(int i=0;i<6;i++) { second=first; switch (i) { case 0: second.left=a; break; case 1: second.right=b; break; case 2://pour b to a if(second.right<=a-second.left) { second.left=second.left+second.right; second.right=0; } else { second.right=second.right-(a-second.left); second.left=a; } break; case 3: if(second.left<=b-second.right) { second.right=second.right+second.left; second.left=0; } else { second.left=second.left-(b-second.right); second.right=b; } break; case 4: second.left=0; break; case 5: second.right=0; break; } second.op.push_back(i); if(second.right==q) { for(int i=0;i<second.op.size();i++) printf("%s\n",op[second.op[i]].c_str()); printf("success\n"); return; } else { if(!visited[second.left][second.right]) result.push(second); visited[second.left][second.right]=true; } } }}int main(){ int a,b,q; while(scanf("%d%d%d",&a,&b,&q)!=EOF) { Cal(a,b,q); } return 0;}/************************************************************** Problem: 1147 User: vincent_ynh Language: C++ Result: Accepted Time:10 ms Memory:2036 kb****************************************************************/
0 0
- 九度OJ;题目1147:Jugs
- 九度OJ 题目1147:Jugs
- 九度 oj 题目1147:Jugs
- 九度OJ 1147 Jugs
- 九度OJ 1147:Jugs(罐子) (模拟、游戏)
- 九度OJ Jugs (装水凑容量问题)
- 题目1147:Jugs
- 题目1147:Jugs
- 九度OJ 题目1029
- 九度OJ 题目1018
- 九度OJ 题目1002
- 九度OJ 题目1058:反序输出
- 九度OJ 题目1062:分段函数
- 九度OJ 题目1063:整数和
- 九度OJ 题目1066:字符串排序
- 九度OJ 题目1089:数字反转
- 九度OJ 题目1098:字母统计
- 九度OJ 题目1032:ZOJ
- Lua基础学习开篇——类型和运算符
- 使用Memcached、Spring AOP构建数据库前端缓存框架
- SDUT14级队员训练1 G - DNA Consensus String
- 【cocos2dx网络游戏】搭建CS架构的基本通信框架(二)Sever(构建消息体)
- eclipse Freemarker插件
- 九度OJ;题目1147:Jugs
- 在同声传译这件事上,Skype是如何击败99.9%的地球人的?
- 看了这个才发现jQuery源代码不是那么晦涩
- Lua基础学习二——表和函数
- sgu172:eXam(二分图染色)
- 队列
- java web中过滤器的配置
- IT从业者自我修炼之道
- Android 碎屏效果 (Crack Screen,击碎屏幕)