2011-08-18 124 views
0

我知道这已经发布过,但我试图在我的路上做 我试图编码,但是显示错误的结果!显然在我的逻辑中有错误。任何人都可以请解释我在哪里有错误?找到第2个元素中第k个元素的最大值

这里我们假设数组按降序排序!

int kthlargestsum(int a[], int b[],int k) 
{ 
    int aIndex=0; 
    int bIndex=0; 
    int sum=0; 
    int i; 
    for(i=0;i<k;++i) 
    { 
     if(a[aIndex]>b[bIndex]) 
     { 
      sum+=a[aIndex]; 
      ++aIndex; 
     } 
     else 
     { 
      sum+=a[bIndex]; 
      ++bIndex; 
     } 
    } 
printf("the output is %d",sum); 
} 

main() 
{ 
    int a[]={10,9,6,4,2}; 
    int b[]={11,9,7,1}; 
    int k; 
    printf("enter the value of k \n"); 
    scanf("%d",&k); 
    kthlargestsum(a,b,k); 

} 
+0

阅读并理解此问题的解决方案:http://stackoverflow.com/questions/5212037/find-the-kth-largest-sum-in-two-arrays – PengOne

回答

0

首先,a[bIndex]似乎怀疑我。也许你想要b[bIndex]

对于其他任何事情,你必须更清楚你想要解决的问题实际上是什么(例子总是很好:)。你的代码似乎是从两个数组中加起来k条目。这现在是我将如何解释“查找第2个元素中第k个最大的元素”。

+0

let say k = 3 ..所以第三大总和将会是19 ...它将如下 - 1st-10 + 11,2nd-11 + 9,3rd-10 + 9 –

+0

@learning_bee:你似乎假设数组按降序排列。如果确实如此,那么请编辑您的问题以反映这一关键假设。此外,在这种情况下,我上面的更正将修复您的代码。 – PengOne

+0

我试过你的......但它显示30作为输出 –

相关问题