题目地址: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. hibernate初涉

    好久都不曾写写总结一些东西了,惰性真的是令人难以克制!虽然和许多北漂族一样,艰苦而又迷茫,但是我总能找到一些方向,一点期盼,因为你就我的目标.我会坚持下去,重拾青春的热血,既然人生如戏,那我不当猪脚. ...

  2. Object -C Dictionary -- 笔记

    // //  main.m //  dictionary // //  Created by facial on 24/8/15. //  Copyright (c) 2015 facial_huo. ...

  3. 字体在Android View中的输出 drawText

    Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标.   public static class FontMetrics {               public flo ...

  4. Appcelerator Titanium 3.x Win7 64位平台安装步骤

    刚接触Android移动开发,第一次下载Titanium,第一次下载ADT,第一次看Javascript代码,N多第一次...... 慢慢摸索了一个礼拜把移动开发的工具链的配置学习了一下,抛砖引玉,但 ...

  5. cocos2d-x精灵移动的方法

    1.飞机发射子弹型 想要实现子弹的的飞行效果,又不想在每帧Update里计算位置,最好的方法调用CCMoveTo 例在发射子弹的时机,能够ccTouchBegan时: CCMoveTo* move = ...

  6. Trie和Ternary Search Tree介绍

    Trie树 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. Trie树与二叉搜索树不同,键不是直接保存在节 ...

  7. [转] 用source命令执行脚本和用sh执行脚本之间的区别

    from: http://blog.csdn.net/david_xtd/article/details/8012627 问题: 有很多方式可以执行脚本, 1).source test.bsh 2). ...

  8. SWFObject文件上传使用记录

    SWFObject文件上传使用方法记录,该插件使用起来相当强大也很灵活,与uploadify各有千秋. 值得一说的是,如果要设置button_image_url这个参数,该参数是按钮的背景图,但是一定 ...

  9. SQL 使用Cursor(游标)遍历结果集

    使用Cursor(游标)可以在存储过程中遍历select 结果集,对其进行相关的操作. Cursor(游标)语法格式 DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段 ...

  10. sass笔记-2|Sass基础语法之让样式表更具条理性和可读性

    这一篇主要详述保持sass条理性和可读性的3个最基本方法--嵌套.导入和注释. 零. 变量 变量本身的作用是为了保持属性值的可维护性,把所有需要维护的属性值放在同一个地方,快速更改,处处生效,可谓售后 ...