题目地址: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. C++: Command Line Processing

    Save this code here for studying and using it. Surce code is here. CmdLine.h File #pragma once #incl ...

  2. [Data Structure] 红黑树( Red-Black Tree ) - 笔记

    1.  红黑树属性:根到叶子的路径中,最长路径不大于最短路径的两倍. 2. 红黑树是一个二叉搜索树,并且有 a. 每个节点除了有左.右.父节点的属性外,还有颜色属性,红色或者黑色. b. ( 根属性 ...

  3. DataTable与Linq相互转换

    DataTable通过dt.AsEnumerable()方法转换可用Linq查询,反之,Linq也可以转化为DataTableDataTable newDt = query1.CopyToDataTa ...

  4. JS 时间格式CST转GMT

    近几天,在做百度地图时,需要转换时间格式并做显示,但是发现显示的时间格式,出现了错乱,二者的日期和小时都出现了变动.例如: 原始时间格式:Thu Aug 18 20:38:54 CST 2016 转换 ...

  5. ceph主要数据结构解析3-Ceph_fs.h文件

    (1)集群内部子版本协议类型宏定义:与公共协议保持独立性,以便消息类型和协议升级受影响 #define CEPH_OSDC_PROTOCOL   24 /* server/client */OSD服务 ...

  6. 家族企业的常青之道——leo鉴书68

    <Leo鉴书(第1辑)>已登陆百度阅读,今后还将不断更新.免费下载地址:http://t.cn/RvawZEx 企业怎样长久传承.怎样长期有效操持活力.是多元化经营还是集中精力打一点,这些 ...

  7. 多表关联查询(ORACLE版)

    前言:这几天学习oracle,把自己对于关联查询的理解,记录下.如有错误请指正! 交叉连接: 交欢连接又称为“笛卡儿积连接”,是两个或多个表之间的无条件连接.一个表中所有的记录与其它表的所有的记录进行 ...

  8. mwc config.h 中文注释

    #ifndef CONFIG_H_ #define CONFIG_H_ /*************************************************************** ...

  9. Asp.Net Mvc MapRoute .html不起作用(转)

    RegisterRoutes 注册路由示例配置: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRo ...

  10. Regex.Escape

    C# 字符串变量str 的值为"a\nb"如果直接输出显示的话,就成了:ab需要输出显示为:a\nb问,怎么办?千万别告诉我定义: str=@"a\nb",因为 ...