早教吧作业答案频道 -->数学-->
将一组数随意分成三份,求每一份的和,要求最大和与最小和相差最小的算法,
题目详情
将一组数随意分成三份,求每一份的和,要求最大和与最小和相差最小的算法,
▼优质解答
答案和解析
假设输入的所有数据是正整数(有负数的情况会比较复杂,之后讨论),存储在数组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]
看了 将一组数随意分成三份,求每一...的网友还看了以下:
球体表面积公式我把球面切三刀,平均分成八个类似等边三角形的图形,再把它们分成无限份,算出每个三角形 2020-04-09 …
将15g蔗糖放入90g水中,充分溶解后形成溶液,再将该溶液分成质量相等的三份:①第一份中加入10g 2020-05-02 …
一个分数问题,不知道怎么解答?星期天,兔妈妈从菜场买回一个大萝卜,准备平均分成三份给三个小兔子吃, 2020-05-17 …
怎样修改转盘一,可使得指针指向字母B的概率等于转盘二指针指向字母B的概率,转盘一:分为六等分,字母 2020-05-20 …
17个骆驼分三份,一份2分之一,一份3分之一,一份9分之一,怎么分?一老农将17头骆驼的遗产分给三 2020-06-25 …
(1){x/2+y/3-z=4x/3-y/2-z/4=3x/2-y/3-z/4=3(2)有三种合金 2020-06-29 …
计算题怎么计算有48个果冻,分成4份,第一份加3第二份减3第三份乘3第四除3,怎么分 2020-07-17 …
将一组数随意分成三份,求每一份的和,要求最大和与最小和相差最小的算法, 2020-07-31 …
递推发的题目有一堆棋子(棋子数大于1),把它四等份后剩一枚,拿去三份后零一枚,将剩下的棋子再四等份后 2020-12-28 …
一道初三计算题(怎么算都算不出,将100克硝酸钾溶液分成2份,其中一份加5克硝酸钾,另一份蒸发20克 2021-01-14 …