Cho mảng có tập hợp các phần tử và nhiệm vụ là tìm ra tập hợp có chính xác ba phần tử có tổng nhỏ hơn hoặc bằng k.
Đầu vào - arr [] ={1,2,3,8,5,4}
Đầu ra - tập hợp → {1, 2, 3} {1, 2, 5} {1, 2, 4} {1, 3, 5} {1, 3, 4} {1, 5, 4} {2, 3, 5} {2, 3, 4}
Trong phần này, nhiệm vụ đầu tiên là tính toán kích thước của mảng tùy thuộc vào đó vòng lặp for của i được lặp cho đến kích thước-2 và vòng lặp for của j được lặp cho đến kích thước-1 và vòng lặp for k được lặp cho đến kích thước
Thuật toán
START Step 1 -> declare int variable sum to k (e.g. 10), i, j, k Step 2 -> declare and initialise size with array size using sizeof(arr)/sizeof(arr[0]) Step 3 -> Loop For i to 0 and i<size-2 and i++ Loop For j to i+1 and j<size-1 and j++ Loop For k to j+1 and k<size and k++ IF arr[i]+ arr[j] + arr[k] <= sum Print arr[i] and arr[j] and arr[k] End IF End Loop for End Loop For Step 4 -> End Loop For STOP
Ví dụ
#include <stdio.h> int main(int argc, char const *argv[]) { int arr[] = {1, 2, 3, 8, 5, 4}; int sum = 10; int i, j, k; int size = sizeof(arr)/sizeof(arr[0]); for (i = 0; i < size-2; i++) { for (j = i+1; j < size-1; j++) { for (k = j+1; k < size; k++) { if( arr[i]+ arr[j] + arr[k] <= sum ) printf( "{%d, %d, %d}\n",arr[i], arr[j], arr[k] ); } } } return 0; }
Đầu ra
Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.
{1, 2, 3} {1, 2, 5} {1, 2, 4} {1, 3, 5} {1, 3, 4} {1, 5, 4} {2, 3, 5} {2, 3, 4}