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

Giá trị nhỏ nhất trong số AND của các phần tử của mọi tập con của mảng trong C ++

Tuyên bố vấn đề

Cho một mảng các số nguyên, nhiệm vụ là tìm AND của tất cả các phần tử của mỗi tập con của mảng và in ra giá trị AND nhỏ nhất trong số tất cả các phần tử đó.

Ví dụ

If arr[] = {1, 2, 3, 4, 5} then
(1 & 2) = 0
(1 & 3) = 1
(1 & 4) = 0
(1 & 5) = 1
(2 & 3) = 2
(2 & 4) = 0
(2 & 5) = 0
(3 & 4) = 0
(3 & 5) = 1
(4 & 5) = 4

Thuật toán

  • Giá trị AND tối thiểu của bất kỳ tập con nào của mảng sẽ là AND của tất cả các phần tử của mảng.
  • Vì vậy, cách đơn giản nhất là tìm AND của tất cả các phần tử của mảng con.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int getMinAndValue(int *arr, int n) {
   int result = arr[0];
   for (int i = 1; i < n; ++i) {
      result = result & arr[i];
   }
   return result;
}
int main() {
   int arr[] = {1, 2, 3, 4, 5};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Minimum value = " << getMinAndValue(arr, n) << endl;
   return 0;
}

Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau -

Đầu ra

Minimum value = 0