[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 ...
随机推荐
- LINQ to SQLite完美解决方案
1.下载安装LinqConnectExpress(就是LinqConnect免费版) 2.安装好后就和LINQ TO SQL 一样了! 3.查询(增删改查和LINQ TO SQL 完全一样,你可以不 ...
- Session之考勤
昨天初步的调侃了一下cookie,希望看官能够有更轻松愉快的学习和进一步的思考应用. 小编今天突然听到人事怨声载道,原来已多日未进行打卡考勤,虽是弹性工作,也颇有不好意思,决定明日改过,进门刷卡.灵机 ...
- 我是企业号体验账户 我发送消息:微信错误 errcode=60011,
http://qydev.weixin.qq.com/qa/index.php?qa=3197&qa_1=%E6%88%91%E6%98%AF%E4%BC%81%E4%B8%9A%E5%8F% ...
- [Java] 可运行 jar 记录
在 Eclipse 上,通过 Export 选择 Java 下的 Runnable JAR file ,可以将项目导出一个可执行的 jar 包. 例子如下 1. Eclipse 项目只有一个文件 ma ...
- [转载]监控 Linux 性能的 18 个命令行工具
转自:http://www.kuqin.com/shuoit/20140219/338066.html 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一 ...
- JavaScript String 对象实例深入研究
本文主要介绍并分析JavaScript中String对象的具体用法,以及和String对象相关的方法,方便开发者在JavaScript开发中更好地处理字符串. 1. 介绍 String 对象,对字符串 ...
- 解决NoSuchMethodError with Spring MutableValues异常问题
今天下午项目启动时,遇到一个异常,导致无法启动: [ 221] ERROR - work.web.context.ContextLoader - Context initialization fail ...
- adb 获取手机值
获取手机RAM值 adb shell cat /proc/meminfo 获取手机内存值 adb shell df /data
- C语言判断文件是否存在
用函数access,头文件是io.h,原型: int access(const char *filename, int amode); amode参数为0时表示检查文件的 ...
- 4_Linux_文件压缩和解压指令
3.4压缩解压命令.gz .tar.gz .zip .bz2 1)gzip 仅压缩文件 gzip命令用于压缩文件,英文原意为GNU zip,所在路径/bin/gzip,其语法格式为: gzip [文件 ...