韩信走马分油(C语言)
任务描述
泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。 有一次闲暇时,他提出过一个有趣的问题,后称为:“泊松分酒”。在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。有3个容器,容量分别为12升,8升,5升。其中12升中装满油,另外两个空着。要求你只用3个容器操作,最后使得某个容器中正好有6升油。下面的列表是可能的操作状态记录:
12,0,0
4,8,0
4,3,5
9,3,0
9,0,3
1,8,3
1,6,5
每行3个数据,分别表示12,8,6升容器中的油量,第一行表示初始状态,第二行表示把12升倒入8升容器后的状态,第三行是8升倒入5升,... 当然,同一个题目可能有多种不同的正确操作步骤。
编程要求
根据提示,在右侧编辑器编写代码。
本题目的要求是,由用户输入:各个容器的容量,开始的状态,和要求的目标油量,程序则通过计算输出是否可能分成功-“Y”,“N”。
例如,用户输入:
12,8,5,12,0,0,6
用户输入的前三个数是容器容量(由大到小),接下来三个数是三个容器开始时的油量配置,最后一个数是要求得到的油量(放在哪个容器里得到都可以), 则程序可以输出“Y”
测试说明
平台会对你编写的代码进行测试:
测试输入:12 8 5 12 0 0 6
预期输出:Y
解析:
首先定义一套规则
题目中的瓶子总共有三种,最大的A,中等的B,最小的C,我们规定:
最大的瓶子只能往中等的瓶子倒;(若中等的瓶子为空)
中等的瓶子只能往最小的瓶子倒;(若最小的瓶子不满)
最小的瓶子只能往最大的瓶子倒;(若最小的瓶子已满)
流动时单项的也是唯一的,如果出现了开始的状态则说明容易不可能成功。
#include <stdio.h>
int main(){int A, B, C, a, b, c, t;scanf("%d", &A);scanf("%d", &B);scanf("%d", &C);scanf("%d", &a);scanf("%d", &b);scanf("%d", &c);scanf("%d", &t);int aa = a, bb = b, cc = c;while(aa != t && bb != t && cc != t){ // 每一步都加了判断, 因为如果测试集不够严谨,例如3 1 1 3 0 0 1 可能会得出N,因为可以会内部循环,但其实第一步就已经成功了。if(bb == 0){if(aa >= B){aa -= B;bb = B;}else{aa = 0;bb = aa;}}if(aa == t || bb == t || cc == t){printf("Y\n");break;}if(cc < C){int m = C - cc;if(bb >= m){cc = C;bb -= m;}else{cc += bb;bb = 0;}}if(aa == t || bb == t || cc == t){printf("Y\n");break;}if(cc == C){int m = A - aa;if(m >= cc){aa += cc;cc = 0;}else{aa += cc;cc -= m;}}if(aa == t || bb == t || cc == t){ // 找到了值printf("Y\n");break;}if(aa == a && bb == b && cc == c){ // 又回到了原状态 printf("N\n");break; }} return 0;
}
韩信走马分油(C语言)相关推荐
- 韩信点兵C语言实现的几种方法
韩信点兵C语言实现的几种方法 问题描述: 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了.输入3个非负整 ...
- ZCMU--5193: 韩信点兵(C语言)
题目描述 韩信点兵,多多益善. 战前,萧何备军.韩信检阅,曰:"增1人?".萧何答:"甚好".韩信再曰:"使看齐?". 萧何再答" ...
- 蓝桥杯泊松分酒java_【蓝桥杯】泊松分酒
题目: 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊 ...
- 蓝桥杯泊松分酒java_蓝桥杯-泊松分酒 - steven_wjg的个人空间 - OSCHINA - 中文开源技术交流社区...
泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...
- 泊松分酒 泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。
package org.bluebridge.topics;/*泊松分酒泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布 ...
- 泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。 有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。
/*泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布.有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒 ...
- 泊松分酒(泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。 有一次闲暇时,他提出过一个有趣的问题,后称为:)
/*** 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布.有一次闲暇时,他提出过一个有趣的问题,后称为:"泊 ...
- Java实现 泊松分酒
泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...
- 泊松分酒--蓝桥杯java历年真题
泊松分酒 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多. 有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:" ...
最新文章
- 如何让li中的标签内容横向排列
- Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
- jQuery easyUI--zTree属性菜单
- 小议H.264技术发展趋势
- Android 第三方有用的库收集
- Python以字符形式打印双色图片中的文字
- oracle按位或运算符怎么用,Oracle按位运算符
- struts2 ModelDriven 和 Preparable 拦截器
- axios 上传文件 封装_axios 封装【满足常规数据上传及file上传】
- 如何将手机号码批量导入手机通讯录
- IDEA启动Tomcat 中文乱码问题
- 鼠标右键菜单没有 新建 - 解决办法
- 关于调ads1115时差分数据错误的时序分析,以及ads1115的计算公式
- 无轴螺旋输送机螺旋叶片的更换方法
- 查询大全,肯定有你需要的!
- python多进程多线程,多个程序同时运行
- 制作简单刮刮乐View
- 第二十六章 使用 CSP 进行基于标签的开发
- Java函数式编程(Lambda表达式、Stream流用法)
- CSM3416SF兼容MP2451,MCP16301HT-E,LT1933ES6,AOZ1282CI
热门文章
- 适合 Kubernetes 初学者的一些实战练习(一)
- SAP Spartacus storefront 模块的实现位置
- 在StackBlitz项目里直接preview某个component的template
- 如何在JSP里自定义标签
- 在SAP分析云里利用词云技术显示大段文本里的关键词
- SAP UI5 extension component loads standard component
- ABAP webdynpro Dynamically add file upload
- 如何分析SAPPSPRO-S_MAT_ENHANC_COMM问题
- Document Builder: REMOVE_CC_DEFAULT_TEXTS
- How to resolve ATC error message Package Violation (Error) - Missing Use Access (USEM)