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