首页 > 其他分享 >分糖果

分糖果

时间:2023-04-25 13:35:34浏览次数:27  
标签:10 小孩 int sweet printf 糖果

 

一、问题描述

    10个小孩围成一圈分糖果,老师分给第1个小孩10块糖,第2个小孩2块,第3个小孩8块,第4给小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩,糖块数为奇数的人可以向老师要一块。问经过几次后大家手中的糖块数一样多,每人各有几块糖。

二、设计思路

    根据题意,10个小孩开始的时候拥有的糖果数是不同的,但分糖的动作是相同的,将手中的糖分一半给右边的小孩,糖块数为奇数的人可以向老师要一块。这即是算法的核心。

四、伪代码

while(糖果不同时)

{

将每个孩子的糖果分成一半

for()

将一半糖果分给右边的孩子

for
}

五、代码实现

#include<stdio.h>

void print(int s[]);

int judge(int c[]);

int j=0;

main()

{

       int sweet[10]={10,2,8,22,16,4,10,6,14,20};

       int i,t[10],l;

printf("child10,2,8,22,16,410,2,8,22,16,4,10,6,14,20,10,6,14,20\n");

       printf("-------\n");

       printf("time\n");

       print(sweet);

       while(judge(sweet))

       {

              for(i=0;i<10;i++)

              {

                     if(sweet[i]%2==0)

                            t[i]=sweet[i]=sweet[i]/2;

                     else

                            t[i]=sweet[i]=(sweet[i]+1)/2;

              }

              for(l=0;l<9;l++)

              {

                     sweet[l+1]=sweet[l+1]+t[l];

                     sweet[0]+=t[9];

                     print(sweet);

              }

       }

}

int judge(int c[])

{

       int i;

       for(i=0;i<10;i++)

       {

              if(c[0]!=c[i])

                     return 1;

       }

       return 0;

}

void print(int s[])

{

       int k;

       printf("%2d",j++);

       for(k=0;k<10;k++)

              printf("%4d",s[k]);

       printf("\n");

}

标签:10,小孩,int,sweet,printf,糖果
From: https://www.cnblogs.com/duzhangdan/p/17352330.html

相关文章

  • 分糖果
     #include<iostream>usingnamespacestd;voidprint(ints[]);intjudge(intc[]);intj=0;intmain(){ intsweet[10]={10,2,8,22,16,4,10,6,14,20}; intt[10]; cout<<"child12345678910"<<endl; cout<&......
  • 分糖果
    自然语言解决问题:首先将每个小孩子定义,并将他们首次得到的糖果数量赋值给他们。该问题明显无法通过一次简单的传递就能结束,因此应用到循环结构。循环至所有小孩子的糖果都相同时输出次数以及所得糖果数量流程图: 具体代码:#include<bits/stdc++.h>usingnamespacestd;intj;i......
  • day 13 分糖果
    1.定义一个数组记录下每个人当前糖的个数;2.根据题设对糖的数目进行循环更新;3.当满足所以糖一致时结束;4.输出  后续代码实现过程中发现无需判断奇偶直接通过下式即可实现功能t[i+1]=(a[i]+1)/2;a[i]=(a[i]+1)/2;总代码如下:#include<iostream>usingnamespac......
  • 分糖果
    分糖果:10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块,第4个小孩22块,第5个小孩16块,第6个小孩4块,第7个小孩10块,第8个小孩6块,第9个小孩14块,第10个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次......
  • 糖果摄影师隐私政策
    糖果摄影师隐私政策 北京时间共舞科技有限公司是糖果摄影师的运营者(以下称“糖果摄影师”或“我们”),我们非常重视用户的隐私和个人信息保护。在使用我们的产品与/或服务时,可能会收集和使用您的相关信息。我们希望通过《糖果摄影师隐私政策》(“本隐私政策”)向您说明我们在您使用......
  • 分糖果
     #include<iostream>usingnamespacestd;intf(inta[]){ inti,f=0; for(i=0;i<=9;i++){ if(a[0]!=a[i]) f=1; }returnf;}intmain(){ inta[10]={10,2,8,22,16,4,10,6,14,20}; intt[10]; intcount=0; while(f(a)) { for(inti=0;i<=9;i++){ if(a[......
  • 糖果 Candy uva1639
    有两个盒子各有n(n<=2e5)个糖,每天随机选一个(概率分别为p,1-p),然后吃一颗糖。直到有一天,没糖了!输入n,p,求此时另一个盒子里糖的个数的数学期望   假设最后某个盒子有k颗糖,然后计算概率即可 #include<iostream>#include<cstring>#include<algorithm>#include<cmath>u......
  • day 34 1005.K次取反后最大化的数组和 | 134. 加油站 | 135. 分发糖果
    1005.K次取反后最大化的数组和给定一个整数数组A,我们只能用以下方法修改该数组:我们选择某个索引i 并将A[i]替换为-A[i],然后总共重复这个过程K次。(我们可以多次选择同一个索引i。)以这种方式修改数组后,返回数组可能的最大和。示例1:输入:A=[4,2,3],K=1输出:5解释:......
  • 糖果美味值 (动态规划)
    描述:有n天,每天有一种糖果,糖果具有一定美味值;规定小美今天吃了明天就不能吃,但有k次机会打破规则。求这n天小美能吃到的最大美味值。第一行输入n,k;第二行输入n天中每天的糖果的美味值。输出最大美味值。样例输入:711234567输出:19importjava.util.Scanner;/**......
  • 华为OD机试 分糖果
    本期题目:分糖果......