题目地址:http://poj.org/problem?id=1606

广度优先搜索的经典问题,倒水问题。算法不需要多说,直接BFS,路径输出采用递归。最后注意是Special Judge

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int K=;
queue<int> Q;
int c[K][K],ca,cb,N,ax,bx;
char map[][]={
{"fill A"},
{"fill B"},
{"empty A"},
{"empty B"},
{"pour A B"},
{"pour B A"}
};
struct node {
int x,y,step;
} d[K][K]; void init()
{
memset(c,,sizeof(c));
memset(d,,sizeof(d));
}
void print(int xa,int xb)
{
if(xa== && xb==) return ;
print(d[xa][xb].x,d[xa][xb].y);
printf("%s\n",map[d[xa][xb].step]);
}
void bfs(int cax,int cbx,int N)
{
while(!Q.empty()) Q.pop();
c[][]=;
Q.push(cax);Q.push(cbx); while(!Q.empty()) {
int xa=Q.front(); Q.pop();
int xb=Q.front(); Q.pop(); if(xb==N ) {
print(xa,xb);
printf("success\n");
break;
}
if(!c[ca][xb]){
c[ca][xb]=; d[ca][xb].x=xa;
d[ca][xb].y=xb;
d[ca][xb].step=; Q.push(ca);
Q.push(xb);
}
if(!c[xa][cb]){
c[xa][cb]=; d[xa][cb].x=xa;
d[xa][cb].y=xb;
d[xa][cb].step=; Q.push(xa);
Q.push(cb);
}
if(!c[][xb]){
c[][xb]=; d[][xb].x=xa;
d[][xb].y=xb;
d[][xb].step=; Q.push();
Q.push(xb);
}
if(!c[xa][]){
c[xa][]=; d[xa][].x=xa;
d[xa][].y=xb;
d[xa][].step=; Q.push(xa);
Q.push();
} if(xa<=cb-xb){
if(!c[][xb+xa]){
c[][xb+xa]=; d[][xb+xa].x=xa;
d[][xb+xa].y=xb;
d[][xb+xa].step=; Q.push();
Q.push(xb+xa);
}
} else {
if(xa-(cb-xb)>= && !c[xa-(cb-xb)][cb]){
c[xa-(cb-xb)][cb]=; d[xa-(cb-xb)][cb].x=xa;
d[xa-(cb-xb)][cb].y=xb;
d[xa-(cb-xb)][cb].step=; Q.push(ca-(cb-xb));
Q.push(cb);
}
} if(xb<=ca-xa){
if(!c[xa+xb][]){
c[xa+xb][]=; d[xa+xb][].x=xa;
d[xa+xb][].y=xb;
d[xa+xb][].step=; Q.push(xa+xb);
Q.push();
}
} else {
if(xb-(ca-xa)>= && !c[ca][xb-(ca-xa)]){
c[ca][xb-(ca-xa)]=; d[ca][xb-(ca-xa)].x=xa;
d[ca][xb-(ca-xa)].y=xb;
d[ca][xb-(ca-xa)].step=; Q.push(ca);
Q.push(xb-(ca-xa));
}
}
} }
int main()
{ while(~scanf("%d%d%d",&ca,&cb,&N)){
init();
bfs(,,N); } return ;
}

[POJ] 1606 Jugs(BFS+路径输出)的更多相关文章

  1. poj 3414 Pots(广搜BFS+路径输出)

    转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:id=3414">http://poj.org/probl ...

  2. POJ-3984.迷宫问题(BFS + 路径输出)

    昨天中午做的这道题,结果蛙了一整天,就因为一行代码困住了,今天算是见识到自己有多菜了.流泪.jpg 本题大意:给一个5 * 5的迷宫,1表示墙壁,0表示通路,从左上角走到右下角并输出路径. 本题思路: ...

  3. bfs + 路径输出

    You are given two pots, having the volume of A and B liters respectively. The following operations c ...

  4. POJ 1606 Jugs

    Jugs Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4280   Accepted: 2533   Special Ju ...

  5. poj 2127 LCIS 带路径输出

    这个题   用一维 为什么错了: 因为 用一维 dp 方程肯定也是一维:但是有没有想,第 i 个字符更新了 j 位置的最优结果,然后 k 字符又一次更新了  j 位置的最优值,然后  我的结果是  i ...

  6. Pots(POJ - 3414)【BFS 寻找最短路+路径输出】

    Pots(POJ - 3414) 题目链接 算法 BFS 1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其 ...

  7. Poj3984 迷宫问题 (BFS + 路径还原)

    Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, ...

  8. POJ-3894 迷宫问题 (BFS+路径还原)

    定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...

  9. 洛谷 P2764 最小路径覆盖问题【最大流+拆点+路径输出】

    题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V ...

随机推荐

  1. [LeetCode] 205. Isomorphic Strings 解题思路 - Java

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  2. cannot be resolved to a type in same package 问题解决

    在 STS 上,一个类引用在相同 package 中另一个类,但是报 cannot be resolved to a type 错误. 解决方法 : Alternatively, you can hi ...

  3. solr + tomcat 搭建

    1.准备jdk7和tomcat72.拷贝solr目录下example/webapps/solr.war,到tomcat下的webapps目录中.3.启动tomcat74.编辑tomcat7中的weba ...

  4. SKEffectNode类

    继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/L ...

  5. diameter - degree problem

    如今要构建一个网络模型,网络中的每一个节点最多和 d 个节点相连接, 且信息的传播从随意一个节点到另外随意一个节点的"最短路径" (路径依照单位路径算)都不能超过 k,问网络中最多 ...

  6. 《C专家变成》之二

    第五章 一.对链接的思考 目标文件并不能直接执行,它首先需要载入到链接器.链接器确认main函数为初始进入点(程序开始执行的地方),把符号引用绑定到内存地址,把所有的目标文件集中在一起,再加上库文件, ...

  7. Linux network setting.

    Lubuntu network setting. //1. Vi /etc/network/interfaces Add:auto eth0iface eth0 inet dhcp //2. Vi / ...

  8. python集合set,frozenset--笔记

    <Python3程序开发指南>笔记. python提供了2种内置的集合类型:可变的set类型.固定的frozenset类型. 只有可哈希运算的对象可添加到集合中.可哈希的数据类型:floa ...

  9. NPOI控件的使用导出excel文件和word文件

    public HttpResponseMessage GetReportRateOutput(DateTime? begin_time = null, DateTime? end_time = nul ...

  10. Asp 图形化报表

    1  图形化的报表的优点 分析.统计业务数据 表现直观,漂亮,有震撼效果的图形化的方式展现业务数据 复杂的业务数据简单化 2  常用的报表组件 HighCharts:是纯js编写的图形化报表 水晶报表 ...