分红酒_蓝桥杯
来源:互联网 发布:赵本山政治问题 知乎 编辑:程序博客网 时间:2024/04/24 10:31
标题:分红酒
有4个红酒瓶子,它们的容量分别是:9升, 7升, 4升, 2升
开始的状态是 [9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。
允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。这样的一次倒酒动作称为1次操作。
假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现?
本题就是要求你编程实现最小操作次数的计算。
输入:最终状态(逗号分隔)
输出:最小操作次数(如无法实现,则输出-1)
例如:
输入:
9,0,0,0
应该输出:
0
输入:
6,0,0,3
应该输出:
-1
输入:
7,2,0,0
应该输出:
2
没办法提交,也不知道自己写的对不对,希望各位路过的大神指正
#include<cstdio>
#include<iostream>
using namespace std;
int b[4]={9,7,4,2};
int A[4]={9,0,0,0};
int main()
{
int a[4],count=0;
char e,f,g;
while(scanf("%d%c%d%c%d%c%d",&a[0],&e,&a[1],&f,&a[2],&g,&a[3])!=EOF){
if(a[0]==A[0]&&a[1]==A[1]&&a[2]==A[2]&&a[3]==A[3])count=0;
else {
for(int i=1;i<4;i++){
int flag=true;
if(a[i]>b[i]){
count=-1;break;
}else if(a[i]==b[i])
count++;
else if(a[i]<b[i]&&a[i]>0){
int m=a[i];
for(int i=1;i<4;i++){
if(m==b[i]){
flag=false;break;
}
}
if(flag){
count=-1;break;
}
else
count += 2;
}
}
}
printf("%d\n",count);
}
return 0;
}
- 分红酒_蓝桥杯
- 分红酒--蓝桥杯
- 分红酒 - 蓝桥杯 - 已更新
- 分红酒
- 分红酒
- 分红酒
- 分红酒
- 蓝桥杯历届决赛之分红酒
- 蓝桥杯软件大赛---分红酒(广度优先搜索)
- 蓝桥杯预赛 分红酒问题 9 7 4 2
- [JAVA][2013蓝桥杯模拟赛 JAVA本科B组][第五题:分红酒]
- 分红酒(广度优先搜索)
- 分红酒 (广度优先搜索)
- 红酒
- 蓝桥杯_分糖果试题
- 3dsMax学习笔记04_用VRayMtl材质制作红酒
- 午夜红酒
- 红酒美人
- apicloud 请删除手机中的apploader后在尝试
- python写爬虫技巧(二):异常处理
- 如何让ssh远程执行的命令在后台执行
- 记住这些公告你会很幸福
- android json解析及简单例子
- 分红酒_蓝桥杯
- Android.mk各项参数以及默认值文件(build/core/config.mk 及base_rules.mk)
- 写文件头的算法流程及C代码实现
- FrogRiverOne
- ceph存储 新一代Linux 文件系统btrfs简介
- 延展和类目
- 向Android系统添加自定义的APP源码
- Android 5.0 API新增和改进
- Android市场不能更新软件版本了。