C++
题目描述
土豪老王有两个儿子,大王和小王,他想把自己的所有资产尽量平均地分配给兄弟俩,如果不能平分,大王会多分一些
老王总共有n项可以分配的资产,每项资产有一个价值,不可分割只能完全属于一个人。
现在老王想知道,如果尽量进行平均分配的话,大王和小王能得到的资产的差最小是多少。
输入格式
第一行一个整数n,表示有n项资产 第二行n个整数a[i],表示每项资产的价值
输出格式
一个整数,表示答案
输入输出样例
输入 #1
```c++
5
1 2 3 4 5
输出 #1
```c++
1
说明/提示
0<n<100,0<a[i]<100
如果将3,4分配给一个人,其他的分配给另一人,那么两人得到的资产总和分别为7和8,差为1。分配方式可能不唯一,但没有更好的答案。
输入为:
5
1 2 3 4 5
输出为:
1
如果真的有奖励 我明天就帮你做
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,a[100],sum=0,mid;
cin >> n;
for(int i=0; i<n; i++)
cin >> a[i];
for(int* p=a; p<a+n; p++)
sum+=*p;
mid=sum/2;
int temp,sum1=0,sum2=0,count;
for(int j=0; j<n; j++)
{
temp=mid;
for(int i=0; i<n; i++)
if(abs(mid-a[i])<temp)
{
temp=abs(mid-a[i]);
count=i;
}
if(sum1<=sum2)
sum1+=a[count];
else
sum2+=a[count];
a[count]=0;
}
cout << abs(sum1-sum2) << endl;
return 0;
}