Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In các bộ ba có tổng ≤ k trong C

Cho mảng, tìm tất cả bộ 3 phần tử (triplet) có tổng ≤ k.

Ví dụ

Mảng: {1, 2, 3, 8, 5, 4}, k = 10

Kết quả: {1,2,3} {1,2,5} {1,2,4} {1,3,5} {1,3,4} {1,5,4} {2,3,5} {2,3,4}

Thuật toán

3 vòng lồng: i từ 0 đến n-3, j từ i+1 đến n-2, k từ j+1 đến n-1. Kiểm tra tổng ≤ k.

Chương trình

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 8, 5, 4};
    int sum = 10;
    int size = sizeof(arr) / sizeof(arr[0]);
    
    for (int i = 0; i < size - 2; i++)
        for (int j = i + 1; j < size - 1; j++)
            for (int 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;
}

Kết quả

{1, 2, 3}
{1, 2, 5}
{1, 2, 4}
{1, 3, 5}
{1, 3, 4}
{1, 5, 4}
{2, 3, 5}
{2, 3, 4}