早教吧作业答案频道 -->数学-->
将一组数随意分成三份,求每一份的和,要求最大和与最小和相差最小的算法,
题目详情
将一组数随意分成三份,求每一份的和,要求最大和与最小和相差最小的算法,
▼优质解答
答案和解析
假设输入的所有数据是正整数(有负数的情况会比较复杂,之后讨论),存储在数组unsigned int input[m]里,数组长度是m,从0到m-1是所有数.
你需要一个排序算法将input[]从小到大排列,最小的input[0].
使用三个变量保存三组数的和,称为sum[0],sum[1],sum[2],把输入数字从大到小依次放入当前三个和中最小的那一个,直到所有数字放完,最大的和最小的之间的差就是结果.
使用C语言的话如下:
int mindiff(unsigned int input[], int length) //此时input是排序完毕的,length是数组长度
{
if(length=0;i--)//从第四大的数开始
{
sum[minSumIndex]+=input[i];
minSumIndex=getMinSumIndex(sum);
}
if(sum[(minSumIndex+1)%3]>sum[(minSumIndex+2)%3])
return sum[(minSumIndex+1)%3] - sum[minSumIndex];
else
return sum[(minSumIndex+2)%3] - sum[minSumIndex];
}
int getMinSumIndex(int sum[])
{
int index=0
if(sum[1]
你需要一个排序算法将input[]从小到大排列,最小的input[0].
使用三个变量保存三组数的和,称为sum[0],sum[1],sum[2],把输入数字从大到小依次放入当前三个和中最小的那一个,直到所有数字放完,最大的和最小的之间的差就是结果.
使用C语言的话如下:
int mindiff(unsigned int input[], int length) //此时input是排序完毕的,length是数组长度
{
if(length=0;i--)//从第四大的数开始
{
sum[minSumIndex]+=input[i];
minSumIndex=getMinSumIndex(sum);
}
if(sum[(minSumIndex+1)%3]>sum[(minSumIndex+2)%3])
return sum[(minSumIndex+1)%3] - sum[minSumIndex];
else
return sum[(minSumIndex+2)%3] - sum[minSumIndex];
}
int getMinSumIndex(int sum[])
{
int index=0
if(sum[1]
看了 将一组数随意分成三份,求每一...的网友还看了以下:
小芳在AB两家超市发现她看中的随声听的单价相同,书包的单价也相同,随声听和书包之和是452元,而且随 2020-03-30 …
小华同学在A、B两家超市发现她看中的随身听的单价相同,书包单价也相同.随身听和书包单价之和是352 2020-05-13 …
高三排列组合有10个相同的小球放入编号为12,3,每个盒子至少放一个,有几种?每个盒子随便放几个, 2020-06-10 …
在一个口袋中有4个完全相同的小球,把它们分别标号1、2、3、4,小明先随枳地摸出一个小球,小强再随 2020-06-17 …
在一个口袋中有4个完全相同的小球,把它们分别标号为1、2、3、4,随机地摸取一个小球然后放回,再随 2020-06-17 …
一个口袋中有4个完全相同的小球,把它们分别标号为1,2,3,4.(1)随机摸取一个小球,求恰好摸到 2020-06-17 …
在一个口袋中有4个完全相同的小球,把它们分别标号……在一个口袋中有4个完全相同的小球,把它们分别标 2020-06-17 …
AS3.0,在满足某个条件下,就生成一个随机位置,随机运动的小球。要求小球在舞台上匀速直线运动,碰 2020-07-31 …
小娟在A,B两家超市发现她看中的随身听的单价相同,书包单价也相同.随身听和书包单价之和是452元,且 2020-12-03 …
小明同学在A、B两家超市发现他看中的随身听和书包的单价都相同,随身听和书包单价之和为452元,且随身 2020-12-03 …