[POJ] 1606 Jugs(BFS+路径输出)
题目地址: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+路径输出)的更多相关文章
- poj 3414 Pots(广搜BFS+路径输出)
转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:id=3414">http://poj.org/probl ...
- POJ-3984.迷宫问题(BFS + 路径输出)
昨天中午做的这道题,结果蛙了一整天,就因为一行代码困住了,今天算是见识到自己有多菜了.流泪.jpg 本题大意:给一个5 * 5的迷宫,1表示墙壁,0表示通路,从左上角走到右下角并输出路径. 本题思路: ...
- bfs + 路径输出
You are given two pots, having the volume of A and B liters respectively. The following operations c ...
- POJ 1606 Jugs
Jugs Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4280 Accepted: 2533 Special Ju ...
- poj 2127 LCIS 带路径输出
这个题 用一维 为什么错了: 因为 用一维 dp 方程肯定也是一维:但是有没有想,第 i 个字符更新了 j 位置的最优结果,然后 k 字符又一次更新了 j 位置的最优值,然后 我的结果是 i ...
- Pots(POJ - 3414)【BFS 寻找最短路+路径输出】
Pots(POJ - 3414) 题目链接 算法 BFS 1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其 ...
- 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, ...
- 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, ...
- 洛谷 P2764 最小路径覆盖问题【最大流+拆点+路径输出】
题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V ...
随机推荐
- 【性能测试】【Jmeter】学习(1)
2013/8/6开始阅读Jmeter文档 2013/8/7总结 监听器——CSV Data Set Config 在Jmeter中添加一个CSV配置原件 CSV配置原件添加方法:(右键点击某一个操作步 ...
- [转]Java Daemon Startup Script
How to start a Java program as a Linux daemon with an /etc/init.d script. See also: http://www.sourc ...
- AES - Rijndael 算法(二)
三:Rijndael算法实现(C++版本) /*-------------------- Rijndael round subkeys ---------------------*/u8 roundK ...
- 数据库 —— 基于 ORM 模型的 Hibernate 的使用(java)
目录: 使用Hibernate Tool 从数据库中生成对应的实体类 1.使用Hibernate Tool 从数据库中生成对应的实体类 Title:Using Hibernate Tools gene ...
- 【服务器运维】Windows Server 2008 R2 下配置证书服务器和HTTPS
前言 2017年1月1日起App Store上的所有App应用将强制开启ATS功能. 苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者 ...
- [AngularJS] Design Pattern: Simple Mediator
We're going to use rootScope emit here to send out events and then we're going to listen for them in ...
- Xcode7 国际化
1.第一步 HaiTing_xcodeproj.png 2.第二不 HaiTing_xcodeproj 2.png 3.第三步 Localizable_strings.png 5第五步 ZLBMeVi ...
- 【c#】Form调用百度地图api攻略及常见问题
首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...
- Understanding AMQP, the protocol used by RabbitMQ--reference
RabbitMQ is a lightweight, reliable, scalable and portable message broker. But unlike many message b ...
- Android 带你玩转实现游戏2048 其实2048只是个普通的控件(转)
1.概述 博主本想踏入游戏开放行业,无奈水太深,不会游泳:于是乎,只能继续开发应用,但是原生Android也能开发游戏么,2048.像素鸟.别踩什么来着:今天给大家带来一篇2048的开发篇,别怕不分上 ...