您的位置:首页 > 其它

历届试题 分糖果(模拟)

2017-02-19 11:20 246 查看
用计算机模拟分糖果的过程即可,每个小朋友的糖果数存放在
vector<int>
中,需要注意的是每一次需要保存每个小朋友的初始糖果数。用初始糖果数量的一半分给左边的小盆友。

#include <iostream>
#include <vector>
using namespace std;

bool is_equal(vector<int> V)
{
for (int i = 0; i < V.size(); i++)
{
if (V[i] != V[0])
return false;
}
return true;
}
int main()
{
int n;
cin >> n;
vector<int> V(n);
for (int i = 0; i < n; i++)
{
cin >> V[i];
}
int cnt = 0;        //补发糖果计数
while(!is_equal(V))
{
//0 1 2 3 4 5
vector<int> Vtemp = V;
for (int i = 0; i < n; i++)
{
V[i] = V[i] / 2;
if(i!=n-1)
V[i] = V[i] + Vtemp[i + 1]/2;
else
V[i] = V[i] + Vtemp[0]/2;
}
for (int i = 0; i < n; i++)
{
if (V[i] & 1)
{
V[i] += 1;
cnt++;
}
}
}
cout << cnt << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: