问题 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][