Chúng ta được cung cấp một mảng các số nguyên, Arr [] và hai biến a và b để xác định một phạm vi [a, b]. Mục đích là tìm số bộ ba có tổng nằm trong khoảng này [a, b].
Chúng tôi sẽ làm điều này bằng cách sử dụng ba vòng lặp for. Số lượng tăng lên nếu arr [i] + arr [j] + arr [k]> =a và arr [i] + arr [j] + arr [k] <=b. Trong đó 0 <=i <=n-2, i
Hãy cùng hiểu với các ví dụ.
Đầu vào - arr [] ={1,2,3,4,5}, N =5, L =2, R =8
Đầu ra - Số sinh ba - 4
Giải thích -
Đầu vào - arr [] ={2,2,2,2,2}, N =5, L =2, R =5
Đầu ra - Số sinh ba - 0
Giải thích -
Mọi bộ ba sẽ có tổng là 6. Số nào không thuộc phạm vi [2,5]
Tổng số sinh ba:0
Chúng tôi lấy một mảng số nguyên Arr [] được khởi tạo với các số ngẫu nhiên.
Lấy các biến L và R để xác định phạm vi [L, R]. N lưu trữ độ dài của Arr [].
Hàm countTriplets (int arr [], int n, int a, int b) nhận một mảng, các biến độ dài và phạm vi của nó làm đầu vào và trả về các bộ ba có tổng nằm trong phạm vi này.
Lấy biến số ban đầu là 0 cho số lượng bộ ba.
Lấy tổng biến ban đầu là tổng của mỗi bộ ba. Ban đầu là 0.
Traverse mảng sử dụng ba vòng lặp for cho mỗi phần tử của bộ ba.
Vòng ngoài cùng từ 0 <=i
Tính tổng =arr [i] + arr [j] + arr [k]. Nếu a <=sum <=b thì số gia tăng.
Ở cuối tất cả các vòng đếm sẽ có tổng số bộ ba đáp ứng điều kiện.
Trả lại số lượng như kết quả mong muốn.
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau - Bộ ba có tổng> =2 và tổng <=8 (1,2,3) → 6 (1,2,4) → 7 (1,2,5) → 8 (1,3,4) → 8 Tổng sinh ba:4 Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
Ví dụ
#include
Đầu ra
Số lượng sinh ba:14