问题 Q(1208): 【基础算法】倒酒问题

本文探讨了在有限操作条件下,如何使用一个大酒瓶和三个不同容量的酒杯,使得最终能将酒均匀分配到两个酒杯中的基础算法问题。通过对给定的容量输入,分析得出所需的最少操作步数,旨在展示逻辑思考与数学应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 Q(1208): 【基础算法】倒酒问题

时间限制: 1 Sec 内存限制: 64 MB
提交: 49 解决: 15
[提交][状态][我的提交]
题目描述

有一个大酒瓶和三个容量分别为a,b,c两的大酒杯,主人把容量为a的酒杯倒满后,两个客人提出大家先各喝一两,而且要主人先喝,这样就要求主人通过三个酒杯最后能在容量为b,c的酒杯中各倒上一两酒(主人可先喝倒出来的一两,可以将酒倒入酒瓶,但不可以从酒瓶中倒出)。主人喝酒的操作不计入步数。且主人可以拿任何一个杯子喝酒,只要其中刚好是1两酒。
输入

第1行:3个整数a,b,c表示三个酒杯的容量,(a,b,c均小于100,且b < a, c < a)
输出

表示所需最少步数。

最开始酒杯中都没有酒,第一步必须将酒杯A倒满。

若无解,则输出no solution
样例输入

(如果复制到控制台无换行,可以先粘贴到文本编辑器,再复制)

4 3 1

样例输出

4

提示

答案解释:

格式为:

步数:a b c 主人

1:4 0 0 0

2:1 3 0 0

3:1 2 0 1

4:1 1 1 1

[提交][状态][讨论版]

#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int m[3]; //三个酒杯的容量,不是酒哦。
int vis[105][105][105][
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值