Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ที่มีระดับบิตหรือน้อยกว่าสูงสุดใน C++


เราได้รับอาร์เรย์จำนวนเต็มและภารกิจคือการนับจำนวนคู่ทั้งหมดที่สามารถเกิดขึ้นได้โดยใช้ค่าอาร์เรย์ที่กำหนดเพื่อให้การดำเนินการ OR บนคู่จะส่งผลให้เกิดค่า น้อยกว่าค่า MAX ในคู่ที่กำหนด

ตารางความจริงสำหรับการดำเนินการ OR แสดงไว้ด้านล่าง

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

ป้อนข้อมูล − int arr[] ={2, 5, 1, 8, 9}

ผลผลิต − จำนวนคู่ที่มีค่าบิต OR น้อยกว่า Max คือ − 3

คำอธิบาย

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

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • ป้อนอาร์เรย์ขององค์ประกอบจำนวนเต็มเพื่อสร้างคู่

  • คำนวณขนาดของอาร์เรย์ที่ส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป

  • สร้างการนับตัวแปรชั่วคราวเพื่อเก็บคู่ที่เกิดจากการดำเนินการ OR ซึ่งมีค่าน้อยกว่าหรือเท่ากับค่า MAX ระหว่างคู่

  • เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง size-1 ของอาร์เรย์

  • ภายในลูป เริ่มวนใหม่ FOR จาก j ถึง i+1 จนถึงขนาดอาร์เรย์

  • ภายในลูป ให้ตรวจสอบ IF arr[i] | arr[j] <=max(arr[i], arr[j]) จากนั้นเพิ่มจำนวนขึ้น 1

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

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

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

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