数组中三元组的第二个最大总和

时间:2015-12-06 22:27:04

标签: arrays sum dynamic-memory-allocation

如何在给定系列中找到第二个最大三元组总和? 到目前为止,我已经通过分配内存将它们放入一个数组中,然后找到了 最好的总和。我无法弄清楚如何找到第二好的。 谢谢你的帮助。

int BestSum(int a[],int size){
    int i,j,k,sum=0,best;

        best=a[0]+a[1]+a[2];
        for(i=0; i<(size-3);i++){
                for(j=i+1;j<(size-2);j++){
                        for(k=j+1;k<(size-1);k++){
                                 sum=a[i]+a[j]+a[k];
                                    if(sum>best){
                                        best=sum;
                                    }
                        }
                }
        }
        return (best);
}

int main(){

int n;
printf("please enter a series of numbers");
int *a,*tmp;
int siz,i,j,k;
int count=0;


a=(int*)malloc(sizeof(int));
for(siz=0;n!=0;siz++) {
    scanf("%d",&n);
    a[siz]=n;
    tmp=realloc(a,(siz+2)*sizeof(int));
    a=tmp;
}

2 个答案:

答案 0 :(得分:0)

别介意,我已经把它想出来了。 我应该刚刚添加了这个second=best;行。

int secondBest(int a[],int size){
int i,j,k,sum,best,second;

    best=a[0]+a[1]+a[2];
    second=a[0]+a[1]+a[2];
    for(i=0; i<(size-3);i++){
            for(j=i+1;j<(size-2);j++){
                    for(k=j+1;k<(size-1);k++){
                                sum=a[i]+a[j]+a[k];
                                if(sum>best){
                                    second=best;
                                    best=sum;
                                }
                    }
            }
    }
    return (second);

}

答案 1 :(得分:0)

import java.util.*;
class sec
{
public static void main(String abc[])
{

Scanner c=new Scanner(System.in);

System.out.println("Enter the length of the array ");
int n=c.nextInt();
int arr[]=new int[n];
int i;

System.out.println("Enter the array ");
    for(i=0;i<n;i++)
     {
      arr[i]=c.nextInt();
    }
System.out.println(" ");
Arrays.sort(arr); 

System.out.println(" The Second best sum of triplets will be " +(arr[n-4]+arr[n-3]+arr[n-2]));
}
}