poj 3414 Pots(bfs)

【代码超详解】POJ 3414 Pots(BFS,0 ms) 一、题目描述 Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29772 Accepted: 12428 Special Judge Description You are given two pots, having the volume of A and B liters respectively. The ... 阅读详情

题目大意:

        你有两个瓶子,容量分别为A,B,有以下三种操作:

        1.FILL(i)          将i灌满。

        2.DROP(i)      将i倒空。

        3.POUR(i,j)    将i中的水倒入j中。可能j已满,i没倒空或j未满,i已空。

        问最少操作几次可以使其中一个杯子容量为C,若无法成立,则输出"impossible"。

解题思路:

        从A为空,B为空为起始状态开始宽搜,一共有6个方向。

代码:

#include <iostream>
#include <cstring>
#include <string>

using namespace std;

struct element{
    int a,b,step,before,
        operation;//0代表fill(a),1代表fill(b),2代表drop(a),3代表drop(b),4代表pour(a,b),5代表pour(b,a);
    element(){};
    element(int _a,int _b,int _step,int _before,int _operation){
        a = _a;
        b = _b;
        step = _step;
        before = _before;
        operation = _operation;
    }
};

element q[10005];
int head,root;
bool f[105][105];
int a,b,c;
int ans[10005];
string s[6];

int main()
{
    cin >> a >> b >> c;
    s[0] = "FILL(1)";
    s[1] = "FILL(2)";
    s[2] = "DROP(1)";
    s[3] = "DROP(2)";
    s[4] = "POUR(1,2)";
    s[5] = "POUR(2,1)";
    memset(f,true,sizeof(f));
    //初始化队列
    q[0].a = 0;
    q[0].b = 0;
    q[0].step = 0;
    q[0].before = -1;
    q[0].operation = -1;
    head = 0;
    root = 1;
    f[0][0] = false;
    //bfs
    while(head < root){
       element temp;
       temp = q[head];
       if(temp.a == c || temp.b == c) break;
       //fill(1)
       if(f[a][temp.b]){f[a][temp.b] = false; q[root] = element(a,temp.b,temp.step+1,head,0); root ++;}
       //fill(2)
       if(f[temp.a][b]){f[temp.a][b] = false; q[root] = element(temp.a,b,temp.step+1,head,1); root ++;}
       //drop(1)
       if(f[0][temp.b]){f[0][temp.b] = false; q[root] = element(0,temp.b,temp.step+1,head,2); root ++;}
       //drop(2)
       if(f[temp.a][0]){f[temp.a][0] = false; q[root] = element(temp.a,0,temp.step+1,head,3); root ++;}
       int tempA,tempB;
       //pour(1,2)
       if(temp.a + temp.b > b){
           tempB = b;
           tempA = temp.a + temp.b - b;
       }
       else{
           tempB = temp.a + temp.b;
           tempA = 0;
       }
       if(f[tempA][tempB]){f[tempA][tempB] = false; q[root] = element(tempA,tempB,temp.step+1,head,4); root ++;}
       //pour(2,1)
       if(temp.a + temp.b > a){
           tempA = a;
           tempB = temp.a + temp.b - a;
       }
       else{
           tempA = temp.a + temp.b;
           tempB = 0;
       }
       if(f[tempA][tempB]){f[tempA][tempB] = false; q[root] = element(tempA,tempB,temp.step+1,head,5); root ++;}
       head ++;
    }
    if(head == root){
        cout << "impossible" << endl;
        return 0;
    }
    int t = head;
    while(t > 0){
        ans[q[t].step] = q[t].operation;
        t = q[t].before;
    }
    cout << q[head].step << endl;
    for(int i = 1; i <= q[head].step; i ++){
        cout << s[ans[i]] << endl;;
    }
    return 0;
}


I2C通信协议SCL与SDA引脚特性:核心要点总结 深入讲解I2C通信协议中SCL和SDA引脚的工作机制与电气特性,帮助理解i2c通信协议的稳定传输原理,掌握上拉电阻配置与信号时序控制要点。 阅读详情

相关推荐

naca翼型_STARCCM+计算二维翼型气动性能

STAR-CCM+计算二维翼型气动性能一算例背景机翼理论主要研究翼型在流体中运动时的力学特性。在工程领域中,机翼以升力面、控制面、叶片或桨叶等形式出现。舰船上的舵、水翼、减摇鳍等都是机翼,螺旋桨、汽轮机叶片和压缩机叶片也都是利用机翼原理工作的,而在研究船舶操纵性时,甚至还可把船体的水下部分看作一个巨大的机翼。随着航空科学的发展,世界各主要航空发达的国家建立了各种翼型系列。美国有NACA系...

weixin_39863741的博客 1万+

【POJ 3414 --- Pots】BFS

【POJ 3414 --- Pots】BFS 题目来源:点击进入【POJ 3414 — Pots】 Description You are given two pots, having the volume of A and B liters respectively. The following operations can be performed: FILL(i) fill t...

来日浅谈的博客 521

vscode中使用PlatformIO创建工程加载慢

解决使用VSCODE+PlatformIO中,第一次新建工程一直加载的问题

Reasally的博客 4979

POJ 3414 Pots【BFS水】

POJ 3414 Pots大意:有两只桶,容量分别为a,b,对每只桶,有以下三种操作:1.Fill(i)装满第i只桶2.DROP(i)将桶i的水倒掉3.POUR(i,j),将桶i中的水倒入桶j,若桶j满,剩余的水遗留于桶i中 问能否通过这些操作使得某只桶恰好装有容量为c的水?若能,输出最少操作次数及过程PS:c<max(a,b); 算法:BFS即可 #include&...

a48634331的博客 149

keil5编程前的工程文件配置,芯片型号支持包配置,用户文件配置,启动文件配置和库函数配置-江科大stm32学习 第一天

1.start文件夹中头文件需要配置路径path,另外user和library也需要,都是同样的操作。如图,在option界面c/c++中,在倒数第二空行的三个点处添加。2.需要设置一个宏,作用是使主函数头文件包含标准库函数,操作如图:复制头文件中8296行的字符串,在option界面的c/c++中第一行define粘贴这个字符串即可。一、首先,下载芯片支持包,选择你自己的器件型号,不懂的可以看我这篇选器件的方法(默认已经注册好用户)点击编译按钮,编译成功后即可在user文件夹里添加main.c正常使用。

weixin_50682964的博客 1952

SAP ABAP实战:如何用CVI_EI_INBOUND_MAIN批量更新BP邮箱(附完整代码)

本文深入解析了SAP ABAP中CVI_EI_INBOUND_MAIN函数在业务伙伴(BP)邮箱地址批量维护场景下的应用。通过详细讲解数据结构构建、关键参数(如任务参数'5')配置及完整代码示例,为开发者提供了一套高效、稳定的批量更新解决方案,并分享了性能优化与错误处理的最佳实践。

weixin_29228781的博客 77

倒水(BFS)Pots POJ - 3414

Pots POJ - 3414 题目链接 bfs题; 标注的状态应为2容器的体积,因为每种2容器的体积都应该只由一种状态达到。 不使用队列 #include<stdio.h> #include<string.h> struct node{ int now_x; int now_y; int step; int howcome; int before; }ll[10050];...

qq_43559193的博客 262

PyQt5开发编译器安装(PyCharm安装)

PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发,

啊渊的专栏 419

poj 3414 Pots 【BFS+记录路径 】

//yy:昨天看着这题突然有点懵,不知道怎么记录路径,然后交给房教了,,,然后默默去写另一个bfs,想清楚思路后花了半小时写了120+行的代码然后出现奇葩的CE,看完FAQ改了之后又WA了。然后第一次用对拍去找特殊数据折腾到十二点半终于AC,最后只想感叹没有仔细读题,没办法啊看着英语略烦躁,不扯了,那个题题解不想写了,回到这题。。。今天中午还是花了四十分钟写了这题(好慢啊orz),感觉,...

dhe56357的博客 152

《RT-DETR魔术师》专栏介绍 & 优快云独家改进创新实战 & 专栏目录

通过本专栏的阅读,后续你也可以自己魔改网络,在网络不同位置(Backbone、head、neck、loss等)进行魔改,实现创新!!!

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 7370

python ERA-5气象数据NetCDF格式解析(一)

python ERA-5气象数据NetCDF格式解析

weixin_43896283的博客 2638

POJ - 3414 Pots BFS + 记录并输出路径

POJ - 3414 Pots 题意: 给你两个杯子的容量 和 最后杯子中剩余水的容量。有三种操作方式 FILL(i)        将第 i 个杯子装满水 DROP(i)      将第 i 个杯子的水倒空  POUR(i,j)     将第 i 个杯子中的水倒入第 j 个杯子中     可能有两种情况:(1) i 杯子中的水还没全倒入 j 杯子中 j 杯子就满了,此时 i 杯子中还...

没有梦想何以远行 272

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

Robot_PLC_HMI_Automation 1515

POJ 3414 Pots (BFS/DFS)

Pots Time Limit:1000MS Memory Limit:65536K Total Submissions:7783 Accepted:3261 Special Judge Description You are given two pots, having the volume ofA...

airen6935的博客 191

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 3414 Pots(图论:BFS)

POJ 3414 Pots(图论:BFS) http://poj.org/problem?id=3414 题意:给你两个容量为A和B的空水杯,要你通过3种操作(程序中分为了6种)来实现A或B杯中有一个杯子中的水是C升. 分析:典型BFS问题.        不过该题目需要输出路径.所以我们用一个结构node来表示到达(i,j)状态时,它的前一个状态是node.i和node.j且操作时nod

code 1531

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ.3414 Pots (BFS)

POJ.3414 Pots (BFS)题意分析给你两个容器,分别能装下A升水和B升水,并且可以进行以下操作 FILL(i) 将第i个容器从水龙头里装满(1 ≤ i ≤ 2); DROP(i) 将第i个容器抽干 POUR(i,j) 将第i个容器里的水倒入第j个容器(这次操作结束后产生两种结果,一是第j个容器倒满并且第i个容器依旧有剩余,二是第i个容器里的水全

Pengwill's Blog 352

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

POJ - 3414 Pots(BFS)

POJ - 3414 Pots(BFS) #include<iostream> #include<queue> using namespace std; typedef pair<int,int> PII; string s[105][105], ans; bool dist[105][105]; int main(){ int a,b,c;cin>>a>>b>>c; queue<PII> q; q

00后的博客 168

POJ 3414 Pots 均分水(bfs)

题目链接: POJ 3414 Pots 题目大意: 有两个水杯,一开始都没有装水,给出两个水杯的容量,和要达到的目标容量 每个水被有三种操作:1.装满水,2.倒掉所有水,3,将水倒入另一个杯子中. 思路: 两个杯子,六种操作,,求最短路,并打印路径,6入口bfs,跟非常可乐一题类似 Description You are given two pots, having the

Dextrad_ihacker的博客 1342

【POJ 3414】Pots(BFS)

思路: 哎呀,这题有种似曾相识的感觉。经分析得这题也是有六次操作,和HDU 1495-非常可乐很类似嘛。稍微麻烦点的就是要输出一对操作字符串。既然是字符串的话,结构体里加一个str变量,然后每次strcpy就可以了。思路很类似,详细见注释。

Chen_yuazzy的博客 403

POJ3414 Pots —— BFS + 模拟

题目链接:http://poj.org/problem?id=3414 Pots Time Limit:1000MS Memory Limit:65536K Total Submissions:18550 Accepted:7843 Special Judge ...

weixin_30835649的博客 156

poj 3414 pots(bfs暴力+路径记录)

思路:这可真是我目前写过最长的题目了,虽然很多可以复制(学艺不精T-T)。。。 其实思路还是很简单的,就是6种情况,各种倒来倒去,然后记录下路径,我的方法是用一张图来表示,有没有走到过,然后图上每个位置都存着父节点的位置,以及父节点怎么达到,如果找到了逆序输出,如果没找到impossible,具体的看代码吧; 代码如下: #include &lt;iostream&gt; #include...

摆渡人的博客 274

POJ 3414 Pots(bfs)

Pots

Pandora_heart的博客 336

poj3414 Pots--BFS

题目来源: poj 3414 问题描述 有两个空壶,最终要将其中一个壶装水量达到给定值。对壶有3种操作方式,一是开水龙头装满,二是倒光,三是将其中一个壶的水倒到另一个壶里,且水倒光或者另一个壶装满。若能实现目标则输出最小步骤数且按顺序输出操作,若不能实现,则输出“impossible” 未AC…之后再看 #include <iostream> #include <queue&gt...

圣托里尼的日落啊~的博客 337

POJ_3414_BFS pots

/* * POJ_3414_BFS * I really like this bfs problem * On the first and only line are the numbers A, B, and C. These are all integers in the range from 1 to 100 and C≤max(A,B). */ #include ...

anchang7456的博客 148
上一篇: poj 3279 Fliptile(搜索)
下一篇: hdu 2181 哈密顿绕行世界问题(dfs)
accelerator_2016
博客等级 码龄11年 3粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值