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

但是,当三元组太多时,它只显示我的数组中的 1 个三元组,以及如何计算所有显示的三元组?更好的是,这个三元组在函数中还是在 int main (void) 中?谢谢你的建议

4

1 回答 1

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;
}
于 2016-11-29T17:28:07.617 回答