您的位置:首页 > 其它

codevs 1098 均分纸牌

2017-11-23 19:50 176 查看
题目:codevs1098

思路: 直接从左到右,遇到小于均值的,直接向右边拿,大于均值的,直接给右边,因为纸牌总数为堆数n的倍数,所以最后肯定能均分;

代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
int a[105];
int main()
{
int n;
cin >> n;
int count = 0;
int sum = 0;
for(int i = 0;i < n;i++)
{
cin >> a[i];
sum+= a[i];
}
sum/=n;
for(int i = 0;i < n;i++)
{
if(a[i]==sum)continue;
if(a[i] > sum){
a[i+1] += a[i]-sum;
a[i] = sum;
count++;
// cout << count << "/" << i << " ";
}
else {
a[i+1] = a[i+1] - sum+a[i];
a[i] = sum;
count++;
//cout << count << "/" << i << " ";
}

}
/*for(int i = 0;i < n;i++)
{
cout << a[i] << " ";
}*/
cout << count;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: