问题描述:10个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个2块,8块,22块,16,4,10,6,14,20。然后所有小孩同时将手中的糖分一半给右边小孩;糖数为奇数的可向老师要一块。问经过多少次大家糖一样多?每个人多少糖。
流程图:
伪代码:
clswe[10]={10,2,8,22,16,4,10,6,14,20} //糖
while 糖数不相同
for i<-0 to 10
if(clswe[i]为偶)
clswe[i]=clswe[i]/2
t[i]=clswe[i]/2
else
clswe[i]=(clswe[i]+1)/2
t[i]=(clswe[i]+1)/2 分开//
for j<-0 to 10
if j==9
clswe[0]+=t[9]
else
clswe[j+1]+=t[j] //给糖
s++ //次数
output s,clswe[0]
代码:
#include <iostream>
using namespace std;
int issame(int a[]);
int main()
{
int clswe[10]={10,2,8,22,16,4,10,6,14,20};
int i,t[10],j,s=0;
while(issame(clswe)==0)
{
for(i=0;i<10;i++)
{
if(clswe[i]%2==0)
{
t[i]=clswe[i]/2;
clswe[i]=clswe[i]/2;
}
else
{
t[i]=(clswe[i]+1)/2;
clswe[i]=(clswe[i]+1)/2;
}
}
for(j=0;j<10;j++)
{
if(j==9)
clswe[0]+=t[9];
else
clswe[j+1]+=t[j];
}
s++;
}
cout<<s<<"次"<<endl<<clswe[0]<<"块"<<endl;
}
int issame(int a[])
{
int i;
for(i=0;i<10;i++)
{
if(a[0]!=a[i])
return 0;
}
return 1;
}
标签:10,20,22,int,clswe,else,打卡 From: https://www.cnblogs.com/chukjbgg333/p/17392193.html