【问题标题】:Second maximum sum of triplets in array数组中三元组的第二个最大和
【发布时间】:2015-12-06 22:27:04
【问题描述】:

如何找到给定系列中三元组的第二个最大总和? 到目前为止,我已经通过分配内存将它们放入一个数组中,然后找到了 最好的总和。我只是不知道如何找到第二好的。 感谢您的帮助。

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;
}

【问题讨论】:

    标签: arrays sum dynamic-memory-allocation


    【解决方案1】:

    别介意伙计们,我已经想通了。 我应该刚刚添加了这个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);
    

    }

    【讨论】:

      【解决方案2】:
      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]));
      }
      }
      

      【讨论】:

      • 对数组进行排序并添加倒数第二个、倒数第三个和倒数第四个元素会更容易..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 2012-10-13
      • 1970-01-01
      • 2022-10-21
      相关资源
      最近更新 更多