【poj 3414】Pots 题意&题解&代码(C++)

这是一篇关于POJ 3414题目解析的文章,讲述了如何使用广度优先搜索(BFS)解决两个瓶子容量转换问题,以达到特定水量C。文章提到了题目的恶心程度,并介绍了通过记录状态转移路径来求解的方法,最终给出了C++代码实现。
摘要由CSDN通过智能技术生成

题目链接:
http://poj.org/problem?id=3414
题意:
给出了两个瓶子的容量A,B, 以及一个目标水量C,
对A、B可以有如下操作:
FILL(i) 填满 i 壶

DROP(i) 倒空 i 壶

POUR(i,j) 把 i 壶的水倒入 j 壶

问经过哪几个操作后能使得任意一个瓶子的残余水量为C。

若不可能得到则输出impossible
题解:
原本一道bfs经典题就硬生生的被改成了恶心吃屎题,记录路径这种东西,唉。。。定pre数组,pre[i]表示标号i的状态由标号 pre[i] 转移而来,最后回溯着输出。
代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int a,b,c;
struct node{
    int x;int y;
}q[10005];
int ans,anss,h,t,vis[105][105],pre[10005],step[10005];
void dfs(int id)
{
      if(step[id])
      {
              dfs(pre[id]);
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值