如何在给定的级数中找到三元组的第二个最大和?到目前为止,我已经通过分配内存将它们放在一个数组中,然后找到了最佳总和。我只是想不出怎么才能找到第二好的。谢谢你的帮助。
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;
}发布于 2015-12-08 00:59:43
不要紧,伙计们,我已经想好了。我应该只添加这行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);}
发布于 2020-05-08 08:39:18
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]));
}
}https://stackoverflow.com/questions/34123608
复制相似问题