自然语言解决问题:首先将每个小孩子定义,并将他们首次得到的糖果数量赋值给他们。该问题明显无法通过一次简单的传递就能结束,因此应用到循环结构。循环至所有小孩子的糖果都相同时输出次数以及所得糖果数量
流程图:
具体代码:
#include<bits/stdc++.h>
using namespace std;
int j;
int s[10]={10,2,8,22,16,4,10,6,14,20},t[10];//初始糖果 代理
bool check(int a[])//判断是否相同
{
for(int i=0;i<10;i++)
{
if(a[i]!=a[0])return true;//和a[0]比即可
}
return false;
}
void p(int a[])//每次打印当前的糖果数
{
cout<<j<<endl;j++;
for(int i=0;i<10;i++)cout<<a[i]<<' ';cout<<endl;
}
int main()
{
while(check(s))
{
for(int i=0;i<10;i++)
{
if(s[i]%2==0)t[i]=s[i]=s[i]/2;//判断奇数偶数
else t[i]=s[i]=s[i]/2+1;
}
for(int i=0;i<9;i++)s[i+1]+=t[i];
s[0]+=t[9];//不可以加上s[i],因为s[i]已经被计算过
p(s);//打印当前方案
}
return 0;
}