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

Đếm các cặp có bitwise HOẶC nhỏ hơn Max trong C ++


Chúng ta được cung cấp một mảng số nguyên và nhiệm vụ là đếm tổng số cặp có thể được tạo thành bằng cách sử dụng các giá trị mảng đã cho để phép toán OR trên các cặp sẽ dẫn đến giá trị giá trị nhỏ hơn MAX trong cặp đã cho.

Bảng sự thật cho phép toán HOẶC được đưa ra bên dưới

A B AVB
0 0 0
1 0 1
0 1 1
1 1 1

Đầu vào - int arr [] ={2, 5, 1, 8, 9}

Đầu ra - Số lượng các cặp có bitwise HOẶC nhỏ hơn Max là - 3

Giải thích -

X Y X V Y
2 5 7> 5 =FALSE
2 1 3> 2 =FALSE
2 8 10> 8 =FALSE
2 9 11> 9 =FALSE
5 1 5 =5 TRUE
5 8 13> 8 =FALSE
5 9 13> 9 =FALSE
1 8 9> 8 =FALSE
1 9 10> 9 =FALSE
8 9 9 =9 =TRUE

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

  • Nhập một mảng các phần tử số nguyên để tạo thành một cặp

  • Tính toán kích thước của một mảng, truyền dữ liệu vào hàm để xử lý thêm

  • Tạo một số biến tạm thời để lưu trữ các cặp được tạo bằng phép toán OR có giá trị nhỏ hơn hoặc bằng giá trị MAX giữa các cặp

  • Bắt đầu vòng lặp FOR từ i đến 0 cho đến kích thước-1 của một mảng

  • Bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến i + 1 cho đến khi kích thước của một mảng

  • Bên trong vòng lặp, kiểm tra IF arr [i] | arr [j] <=max (arr [i], arr [j]) sau đó tăng số lượng lên 1

  • Trả lại số lượng

  • In kết quả.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//Count pairs with bitwise OR less than Max
int Pair_OR(int arr[], int size){
   int count = 0;
   for (int i = 0; i lt; size - 1; i++){
      for (int j = i + 1; j lt; size; j++){
         if ((arr[i] | arr[j]) lt;= max(arr[i], arr[j])){
            count++;
         }
      }
   }
   return count;
}
int main(){
   int arr[] = { 4, 8, 9, 10, 23};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of pairs with bitwise OR less than Max are: "<<Pair_OR(arr, size);
   return 0;
}

Đầu ra

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

Count of pairs with bitwise OR less than Max are − 3