2016-11-29 116 views
0

我有這個函數: int triplet(int * array,int size,int K){int i,j,k;數組三元組只顯示一次

for(i = 0; i < size-2; i++) { 
    for (j = i+1; j < size-1; j++) { 
     for (k = j+1; k < size; k++) { 
     /* Check if the sum of current triplets 
     is equal to "K" */ 
      if(array[i] + array[j] + array[k] == K) { 
      printf("Triplet Found : %d, %d, %d\n", array[i], array[j], array[k]); 
      return 1; 
      }   
     } 
    } 
} 
/* No triplet found whose sum is equal to K */ 
return 0;} 

但是,它只顯示了一個三元組,當三胞胎的方式太多,以及如何計算所有顯示三胞胎?有什麼更好的辦法,在函數中還是在int main(void)中有這個三元組?感謝您的建議

回答

0

從功能不要return

if(array[i] + array[j] + array[k] == K) { 
    printf("Triplet Found : %d, %d, %d\n", array[i], array[j], array[k]); 
    return 1; 
}  

你可以做,而不是像這樣:

int triplet(int *array, int size, int K) { 
    int i, j, k; 
    int found = 0; /* triplets whose sum is equal to K */ 
    for(i = 0; i < size-2; i++) { 
    for (j = i+1; j < size-1; j++) { 
     for (k = j+1; k < size; k++) { 
     if(array[i] + array[j] + array[k] == K) { 
      printf("Triplet Found : %d, %d, %d\n", array[i], array[j], array[k]); 
      found++; 
     }   
     } 
    } 
    } 
    return found; 
} 
+0

感謝您的幫助,但現在它以零爲K = 7它需要1 + 6 + 0,我想在沒有使用零,因爲那麼它不像三元組,但是雙重:D – blackroad

+0

替換'if(array [i] + array [j] + array [k] == K){'with' int a = array [i],b = array [j],c = array [k];如果(a && b && c && a + b + c == K){'。 –

+0

它的有趣,但現在它只顯示再次只有1三聯:D,但沒有這顯示更多的三胞胎,但像3 + 0 = 4三聯:D – blackroad