Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

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


Đề bài

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

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 nhỏ nhất 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ụ mã nguồn

#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 biên dịch và chạy chương trình trên. Nó tạo ra đầu ra sau:

Kết quả

Minimum value = 0