Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số bộ ba trong một mảng có tổng trong phạm vi [a, b] trong C ++


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 -

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

Đầ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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • 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.

Ví dụ

 #include  using namespace std; int countTriplets (int arr [], int n, int a, int b) {int count =0; int sum =0; for (int i =0; i  =a &&sum <=b) // kiểm tra {count ++; // cout < 

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

 Số lượng sinh ba:14