题目的意思很简单,第一个小朋友从1个糖开始发,第二个小朋友发2个,第num_people个小朋友发num_people个,发完一轮,还有糖,继续发,第二轮时,第一个小朋友发num_people+1,第二个小朋友发num_people+2,地num_people个小朋友发2×num_people个。如果还有,那么第三轮,2×num_people +1个
实际上,发多少个苹果可以直接由一个变量确定,每次加一发给当前小朋友就完事了。
循环的退出条件是糖果发完。
vector<int> distributeCandies(int candies, int num_people)
{
//赋初值为0
vector<int> num(num_people,0);
//每次要分配的糖果
int candies_dis = 0;
//如果人数只有1,全部分给他
if(num_people == 1) { num.push_back(candies); return num;}
//当糖果不为0时
while(candies != 0)
//循环
for(int i = 0; i < num_people; i ++ )
{
//每次分配的糖果都加1
candies_dis ++;
//如果分配的糖果小于糖果库,且分配的糖果小于等于糖果库,说明够糖果可分
if(candies_dis <= candies)
{
num[i] += candies_dis;
candies -= candies_dis; //分配完糖果库
}
else
{
num[i] += candies; //把剩下的糖果全都给当前的小朋友
candies = 0;
}
}
return num;
}
};