2016-11-29 2 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;} 

Но это показывает только 1 триплет из моего массива, тройни слишком больше и как посчитать все показывает тройню? Что лучше, иметь этот триплет в функции или в 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]; if (a && b && c && a + b + c == K) {'. –

+0

его смешно, но теперь он снова показывает только 1 триплет: D, но без этого его шоу больше триплетов, но триплет, как 1 + 3 + 0 = 4: D – blackroad

Смежные вопросы