任务描述

泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。 有一次闲暇时,他提出过一个有趣的问题,后称为:“泊松分酒”。在我国古代也提出过类似问题,遗憾的是没有进行彻底探索,其中流传较多是:“韩信走马分油”问题。有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语言)相关推荐

  1. 韩信点兵C语言实现的几种方法

    韩信点兵C语言实现的几种方法 问题描述: 相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了.输入3个非负整 ...

  2. ZCMU--5193: 韩信点兵(C语言)

    题目描述 韩信点兵,多多益善. 战前,萧何备军.韩信检阅,曰:"增1人?".萧何答:"甚好".韩信再曰:"使看齐?". 萧何再答" ...

  3. 蓝桥杯泊松分酒java_【蓝桥杯】泊松分酒

    题目: 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊 ...

  4. 蓝桥杯泊松分酒java_蓝桥杯-泊松分酒 - steven_wjg的个人空间 - OSCHINA - 中文开源技术交流社区...

    泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...

  5. 泊松分酒 泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。

    package org.bluebridge.topics;/*泊松分酒泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布 ...

  6. 泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。 有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。

    /*泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布.有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒 ...

  7. 泊松分酒(泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布。 有一次闲暇时,他提出过一个有趣的问题,后称为:)

    /*** 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布.有一次闲暇时,他提出过一个有趣的问题,后称为:"泊 ...

  8. Java实现 泊松分酒

    泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多.有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:"泊松分酒& ...

  9. 泊松分酒--蓝桥杯java历年真题

    泊松分酒 泊松是法国数学家.物理学家和力学家.他一生致力科学事业,成果颇多. 有许多著名的公式定理以他的名字命名,比如概率论中著名的泊松分布. 有一次闲暇时,他提出过一个有趣的问题,后称为:" ...

最新文章

  1. 如何让li中的标签内容横向排列
  2. Linux磁盘管理----分区格式化挂载fdisk、mkfs、mount
  3. jQuery easyUI--zTree属性菜单
  4. 小议H.264技术发展趋势
  5. Android 第三方有用的库收集
  6. Python以字符形式打印双色图片中的文字
  7. oracle按位或运算符怎么用,Oracle按位运算符
  8. struts2 ModelDriven 和 Preparable 拦截器
  9. axios 上传文件 封装_axios 封装【满足常规数据上传及file上传】
  10. 如何将手机号码批量导入手机通讯录
  11. IDEA启动Tomcat 中文乱码问题
  12. 鼠标右键菜单没有 新建 - 解决办法
  13. 关于调ads1115时差分数据错误的时序分析,以及ads1115的计算公式
  14. 无轴螺旋输送机螺旋叶片的更换方法
  15. 查询大全,肯定有你需要的!
  16. python多进程多线程,多个程序同时运行
  17. 制作简单刮刮乐View
  18. 第二十六章 使用 CSP 进行基于标签的开发
  19. Java函数式编程(Lambda表达式、Stream流用法)
  20. CSM3416SF兼容MP2451,MCP16301HT-E,LT1933ES6,AOZ1282CI

热门文章

  1. 适合 Kubernetes 初学者的一些实战练习(一)
  2. SAP Spartacus storefront 模块的实现位置
  3. 在StackBlitz项目里直接preview某个component的template
  4. 如何在JSP里自定义标签
  5. 在SAP分析云里利用词云技术显示大段文本里的关键词
  6. SAP UI5 extension component loads standard component
  7. ABAP webdynpro Dynamically add file upload
  8. 如何分析SAPPSPRO-S_MAT_ENHANC_COMM问题
  9. Document Builder: REMOVE_CC_DEFAULT_TEXTS
  10. How to resolve ATC error message Package Violation (Error) - Missing Use Access (USEM)