093.波瓦松的分酒趣题

简介: 093.波瓦松的分酒趣题
#include<stdio.h>
void getti(int a,int y,int z);
int i;           /*最后需要分出的重量*/
void main()
{
    int a,y,z;
    clrscr();
    puts("***************************************************************");
    puts("*  This program is to solve Problem of Poisson Beer Division. *");
    puts("* The Problem is as follows: Someone has a bottle of 12 pints *");
    puts("* beer. He wants to get 6 pints, but he does not has a bottle *");
    puts("* of 6 pints. He only has a bottle of 8 pints and a bottle of *");
    puts("* 5 pints. So how can he get 6 pints?                         *");
    puts("***************************************************************");
    printf(" >> Input Full bottle a,Empty b,c, and Get volumes:\n"); /*a 满瓶的容量  y:第一个空瓶的容量  z:第二个空瓶的容量*/
    printf(" >> ");
    scanf("%d%d%d%d",&a,&y,&z,&i);
    getti(a,y,z);           /*按a -> y -> z -> a的操作步骤*/
    /*getti(a,z,y);           /*按a -> z -> y -> a的步骤*/
    printf("\n Press any key to quit...");
    getch();
}
void getti(int a,int y,int z)   /*a:满瓶的容量  y:第一个空瓶的容量  z:第二个空瓶的容量*/
{
   int b=0,c=0,j=0;           /* b:第一瓶实际的重量  c:第二瓶实际的重量 j: 倒的步数*/
   puts(" >> The division steps are as follows.\n");
   printf(" Bottle:    a<%d> b<%d> c<%d>\n",a,y,z);
   printf("-----------------------------\n");
   printf(" Step No.|\n");
   printf("   <%d>   | %4d %4d %4d\n",j++,a,b,c);
   while(a!=i||b!=i&&c!=i)      /*当满瓶!=i或另两瓶都!=i*/
   {
      if(!b)
      {  a-=y; b=y;}    /*如果第一瓶为空,则将满瓶倒入第一瓶中*/
      else if(c==z)
      {  a+=z; c=0;}    /*如果第二瓶满,则将第二瓶倒入满瓶中*/
      else if(b>z-c)    /*如果第一瓶的重量>第二瓶的剩余空间*/
      { b-=(z-c);c=z;}    /*则将装满第二瓶,第一瓶中保留剩余部分*/
      else{ c+=b; b=0;}   /*否则,将第一瓶全部倒入第二瓶中*/
      printf("   <%d>   | %4d %4d %4d\n",j++,a,b,c);
   }
   printf("-----------------------------\n");
}
相关文章
|
6月前
|
搜索推荐 算法 C++
蓝桥杯分糖果、最小化战斗力差距、小蓝零花钱
这是一个关于算法问题的集合,包括三个不同的任务: 1. **分糖果**:肖恩有不同种类的糖果要分给学生,目标是使得到糖果字符串的字典序最大且尽量小。给定糖果种类数和一个初始字符串,输出能达到的最小字典序的最大值。 2. **最小化战斗力差距**:小蓝需要将队员分为两组,每组战斗力差距最小。给定队员数量和战斗力值,找出最小的战斗力差距。 3. **小蓝的零花钱**:小蓝要在序列中分割偶数和奇数,每次分割代价是两端元素差的绝对值。目标是在预算内确定最多能进行多少次这样的分割。 每个问题都提供了输入输出示例和相应的C++代码片段来解决这些问题。
|
6月前
1052 卖个萌 (20 分)//部分正确
1052 卖个萌 (20 分)//部分正确
|
7月前
|
数据可视化 Go
快刀斩乱麻,二区7分今年9月发表,孟德尔随机化如何做药靶筛选?
该文章是2023年9月发表在《Journal of Translational Medicine》的孟德尔随机化研究,探索风湿性关节炎(RA)的潜在药物靶点。研究通过遗传学方法鉴定,发现7个可能的药物靶点,这些基因与免疫功能相关,有望为RA药物开发提供新方向,节省成本,并增加临床试验成功的可能性。分析过程包括MR分析、共定位、功能富集和药物预测等步骤。
141 0
|
7月前
7-35 情人节 (15 分)
7-35 情人节 (15 分)
62 0
L2-028 秀恩爱分得快 (25 分)
L2-028 秀恩爱分得快 (25 分)
161 0
天梯赛真题——7-6 老板的作息表(25 分)
新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了? 本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。
700 0
天梯赛真题——7-6 老板的作息表(25 分)
L1-035 情人节 (15 分)
L1-035 情人节 (15 分)
139 0
L1-035 情人节 (15 分)
h0131. 钞票 (15 分)
h0131. 钞票 (15 分)
117 0
|
存储
L2-028 秀恩爱分得快 (25 分)(模拟)
L2-028 秀恩爱分得快 (25 分)(模拟)
203 0
L2-029 特立独行的幸福 (25 分)(数组模拟)
L2-029 特立独行的幸福 (25 分)(数组模拟)
132 0