14、1000、876、850、776、687、527、504、412、370,分成两组,每组五个数,求两组和之差最小值

发布网友 发布时间:2022-04-24 13:19

我来回答

3个回答

热心网友 时间:2023-10-14 05:19

14、1000、876、850、776、687、527、504、412、370,分成两组,每组五个数,两组和之差最小值是多少?
这10个数的总和是7466,平均分成2份,每份和是3733
因此,分成的两组数之和越接近3733,求出的差就越小
如果不用程序,就只能试试了

热心网友 时间:2023-10-14 05:19

经我详细测算
两组的最小差值就是 16
没有比这个更小的了
该两组数为:
14、876、527、504、370 和值为 3741
1000、850、776、687、412 和值为 3725

热心网友 时间:2023-10-14 05:19

编程就可以了,帮你把C(10,5)=252种情况都算出来比较就行,你的答案16是对的;
C++源代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
const int n=10;
int a[n]={14,1000,876,850,776,687,527,504,412,370};
int sum=0;//算总和
for(int i=0;i<n;i++)
sum+=a[i];
int min=sum;//用于记录最小值min,用总和作为初始值
cout<<n<<"个数字总和="<<sum<<endl;
//做各种比较的可能
for(int i=0;i<n-4;i++)
for(int j=i+1;j<n-3;j++)
for(int k=j+1;k<n-2;k++)
for(int l=k+1;l<n-1;l++)
for(int m=l+1;m<n;m++)
{
int t1=a[i]+a[j]+a[k]+a[l]+a[m];//记其中5个数总和为t1
int t2=sum-t1;//记另外5个数总和为t2,用所有数总和减去t1就得到
if(min>abs(t1-t2))//如果比原有的最小差更小的话,就取更小的差
min=abs(t1-t2);
}
cout<<"分两组数的最小差="<<min<<endl;
system("pause");
return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com