博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nyoj 21三个水杯(搜索)
阅读量:5235 次
发布时间:2019-06-14

本文共 991 字,大约阅读时间需要 3 分钟。

三个水杯
时间限制:1000 ms  |  内存限制:65535 KB 
难度:4
描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 
输入第一行一个整数N(0<N<50)表示N组测试数据
 接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V1<100 V3>0)表示三个水杯的体积。
 第二行给出三个整数E1 E2 E3 (体积小于等于相应水杯体积)表示我们需要的最终状态输出每行输出相应测试数据最少的倒水次数。如果达不到目标状态输出-1

样例输入

2

6 3 1
4 1 1
9 3 2
7 1 1
样例输出

3

-1

#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f#define ll long long#define maxn 100100#define maxm 400105using namespace std;struct node{ int x,y,z,step;};node S,T;int E1,E2,E3;int v1,v2,v3;bool vis[100][100][100];int bfs(){ queue
q; memset(vis,false,sizeof(vis)); vis[S.x][S.y][S.z]=true; q.push(S);while(!q.empty()){ T=q.front();q.pop(); int x=T.x,y=T.y,z=T.z,step=T.step;//cout<
<
<
<
<
0){ if(y
0){ if(x
0){ if(x

转载于:https://www.cnblogs.com/da-mei/p/9053267.html

你可能感兴趣的文章
php文件系统处理
查看>>
案例分析:项目组内踢皮球事件
查看>>
C++友元(友元函数、友元类和友元成员函数)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
async await 和 task的区别和理解(可能有错)
查看>>
使用自定义比较操作符排序,查找
查看>>
vector详解
查看>>
模拟一位顾客去银行取钱的情形
查看>>
VMware下Ubuntu16.04的安装、可能出现的问题的解决办法及基本配置
查看>>
objective c数据封装
查看>>
剑指offer-把二叉树打印成多行
查看>>
hihocoder-1497-Queen Attack
查看>>
kubernetes常用命令
查看>>
js 函数 理解
查看>>
CUDA Thread Indexing
查看>>
hibernate增删改查
查看>>
计算机网络面试题 系列一
查看>>
BZOJ-1069 [SCOI2007]最大土地面积
查看>>
图解集合5:不正确地使用HashMap引发死循环及元素丢失
查看>>
损失函数与正则项之间的关系和分析
查看>>