Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พิมพ์ทริปเล็ตที่ผลรวมน้อยกว่าหรือเท่ากับ k ในภาษา C

ให้อาร์เรย์และค่า k หาชุดของ 3 ตัวเลข (triplet) ที่ผลรวมน้อยกว่าหรือเท่ากับ k

ตัวอย่าง

Input: arr[] = {1, 2, 3, 8, 5, 4}, sum = 10

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

อัลกอริทึม

ใช้ 3 ลูปซ้อนกัน: i จาก 0 ถึง n-3, j จาก i+1 ถึง n-2, k จาก j+1 ถึง n-1 ตรวจสอบเงื่อนไข arr[i]+arr[j]+arr[k] <= sum

โค้ดตัวอย่าง

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

ผลลัพธ์

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