2011-08-18 2 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

k = 3 ..라고 말하십시오. 그래서 3 번째로 큰 합계는 19입니다 ... 1st-10 + 11,2nd-11 + 9,3rd-10 + 9 –

+0

@learning_bee : 배열이 내림차순으로 정렬되었다고 가정하는 것 같습니다. 이것이 사실이라면 그 중요한 가정을 반영하여 질문을 편집하십시오. 또한,이 경우 위의 수정을 통해 코드가 수정됩니다. – PengOne

+0

나는 당신을 시험해 보았습니다 ... 그러나 출력이 30으로 표시됩니다 –

관련 문제