NYOJ 21三个水杯(bfs)

10分钟快速搭建OpenClaw(基于Windows+飞书) OpenClaw 是一款功能强大的 AI 智能体工具,能够帮助用户管理邮件、日历等日常事务。本文详细介绍了在 Windows11 系统上安装和配置 OpenClaw 的完整步骤,包括 Node.js 环境搭建、Git 安装、OpenClaw 部署以及飞书机器人创建与对接。通过简单的命令行操作和可视化界面配置,用户可以快速完成 AI 助手部署,实现智能办公自动化。文中还提供了飞书机器人权限设置等关键环节的图文指引,帮助用户轻松完成系统集成。 阅读详情

三个水杯

时间限制: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

tips:每个节点的下一个状态最多有六种,注意不能定量倒水,只能倒满或者被倒空。
#include<iostream>
#include<cstring>
#include<queue>

using namespace std;

int v1,v2,v3;
int ex,ey,ez;
int book[101][101][101];

struct node{
	int a,b,c,step;
};
void bfs()
{
	queue<node>q;
	
	book[v1][0][0]=1;
	q.push(node{v1,0,0,0});
	
	while(!q.empty())
	{
		node tt=q.front();q.pop();
		int x=tt.a,y=tt.b,z=tt.c;
		if(x==ex&&y==ey&&z==ez){cout<<tt.step<<endl;return;}
		
		int nx=x,ny=y,nz=z;
		if(x&&y<v2)                 //1-->2
		{
			if(x>v2-y)nx=x-(v2-y),ny=v2;
			else nx=0,ny=y+x;
			nz=z;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		
		if(x&&z<v3)                 //1-->3
		{
			if(x>v3-z)nx=x-(v3-z),nz=v3;
			else nx=0,nz=z+x;
			ny=y;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		
		if(y&&x<v1)                 //2-->1
		{
			if(y>v1-x)ny=y-(v1-x),nx=v1;
			else ny=0,nx=x+y;
			nz=z;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		if(y&&z<v3)                 //2-->3
		{
			if(y>v3-z)ny=y-(v3-z),nz=v3;
			else ny=0,nz=z+y;
			nx=x;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		if(z&&x<v1)                 //3-->1
		{
			if(z>v1-x)nz=z-(v1-x),nx=v1;
			else nz=0,nx=x+z;
			ny=y;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		if(z&&y<v2)                 //3-->2
		{
			if(z>v2-y)nz=z-(v2-y),ny=v2;
			else nz=0,ny=y+z;
			nx=x;
			if(!book[nx][ny][nz])book[nx][ny][nz]=1,q.push(node{nx,ny,nz,tt.step+1});
		}
		
	}
	cout<<-1<<endl;
	
}
int main()
{
	int t;cin>>t;
	while(t--)
	{
		memset(book,0,sizeof(book));
		cin>>v1>>v2>>v3>>ex>>ey>>ez;
		bfs();
	}
	
	return 0;
}


基于TI MSPM0的PS2双轴按键摇杆模块ADC+GPIO驱动移植实战 本文详细介绍了在TI MSPM0微控制器上驱动PS2双轴按键摇杆模块的完整实战流程。通过SysConfig图形化工具配置ADC与GPIO引脚,并编写了包含ADC采样、按键检测及数据处理的驱动代码,实现了对摇杆X/Y轴模拟量及按键数字量的稳定读取,为嵌入式控制项目提供了可直接移植的解决方案。 阅读详情

相关推荐

抖音自定义卡片链接(图文链接)

抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil

傅恒的博客 4107

算法作业1:倒水问题——三壶谜题

有一个充满水的8品脱的水壶和两个空水壶(容积分别是5品脱和3品脱)。通过将水壶完全倒满水和将水壶的水完全倒空这两种方式,在其中的一个水壶中得到4品脱的水。

JingYan_Chan的博客 4814

Uds诊断自动化(CANoe.diva应用)

(7)其他配置选择可以保持默认(一般情况下,DTC以及31服务、下载服务需要另外测试)。(1)打开CANoe.Diva软件,并新建Diva工程。(2)设置工程名和保存位置;在"Specification file"(3)测试案例打开后的界面如下,可以对要进行测试的案例进行勾选,(可查看下角的进度条)后;(3)等待DIva工程的生成;(4)接下来是修改Diva工程选项,如下图点击。,如用例间的时间间隔、复位等待时间等。,即可打开导入的测试工程。,即可生成测试用例。(1)在CANoe中。

LIUJIAAAAA的博客 3370

三个容器倒水问题

/*问:有三个容器,容量是x、y、z,若要得到t体积的水,倒来倒去最少需要操作几步?*/ /*测试用例:3 5 8 4*/ #include <iostream> #include <array> #include <vector> #include <queue> using namespace std; //一个存储三个容器当前状态的结构体...

weixin_39566854的博客 2358

倒水问题 C/C++实现方法

一、题目 倒水问题: 给定 2 个没有刻度容器,对于任意给定的容积,求出如何只用两个瓶装出 L 升的水,如果可以,输出步骤,如果不可以,请输出 No Solution 二、解题思路 这个题刚开始一点想法都没有,原本把这当成一个数学问题来想(就那种纯数学),后来突然想起来这个是在搜索算法下的一个实验题,于是我开始往这方面靠,搜索算法,我首先想到的就是DFS和BFS,这道题我就是 用BFS来解决的。 我们首先想这个是否真的符合BFS来解决呢,其实分析不难发现,对于两个杯子倒水问题其实也就是8种情况,而且每一步都

Sober_Kris的博客 6421

三个容器倒水问题---BFS

问题描述 有装满水的6升的杯子,空的3升杯子和1升杯子,3个杯子中都没有刻度。在不使用其他道具的情况下,是否可以量出4升的水呢? 注意:由于没有刻度,用杯子x给杯子y倒水时必须一直持续到把杯子y倒满或者把杯子x倒空,而不能中途停止。 你的任务是解决一般性的问题:设大、中、小3个杯子的容量分别为a,b,c,最初只有大杯子装满水,其他两个杯子为空。最少需要多少步才能让某一个杯子中的水有x升呢?你需要打印出每步操作后各个杯子中的水量(0<c<b<a<1000)。 思路 把每次操作的结果看

mycocoo的博客 8555

BFS——NYOJ 21 三个水杯

三个水杯 时间限制:1000ms | 内存限制:65535KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0&lt;N&lt;50)表示N组...

kouriba 224

NYOJ 21 三个水杯BFS

描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个整数V1 V2 V3 (V1>V2>V3 V10)表示三个水杯的体积。 第二行给出三

光明~~~ 2万+

NYOJ-21-三个水杯BFS

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个整数V1 V

wyjwyl的专栏 533

NYOJ21 三个水杯 (经典问题 bfs)

NYOJ21 三个水杯 (经典问题 bfs) 2014年12月21日 22:26:46 阅读数:1278 题目描述: 转载地址https://blog.csdn.net/fool_ran/article/details/42065653 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你...

Strive_Y的博客 1168

nyoj21三个水杯。。

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

bobika_的专栏 509

NYOJ-21 三个水杯BFS

给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=21用广度搜索算法就能做出了#include <cstring> #inclu

只会666 553

NYOJ-21-三个水杯

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

一个人的路程 697

nyoj21 三个水杯BFS

题目21题目信息运行结果本题排行讨论区 三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组

苏苏爱自由 3747

三个水杯bfs

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

穆梓先生 1042

三个水杯问题

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三个

喜爱兰兰 929

NYOJ-21-三个水杯BFS 模拟)

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

Prim 965

NYOJ 21-三个水杯

三个水杯 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三

别止的博客 389

3个水杯倒水问题(广度优先搜索)

三个水杯 时间限制:1000ms | 内存限制:65535KB 难度:4 描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入 第一行一个整数N(0&lt;N&lt;50)表示N组...

WEBCODE 4935

成都市geojson(包含高新区三个区域合一,天府新区)

成都市geojson(包含高新区三个区域合一,天府新区)

Qt海康威视SDK二次开发登录与预览

Qt开发海康威视网络摄像头SDK,网络摄像头的注册与预览,相关函数的用法与示例。

上一篇: 蓝桥杯 超级玛丽
下一篇: NYOJ 325 zb的生日(组合数搜索)
ninesun127
博客等级 码龄11年 152粉丝 288原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值