>  기사  >  백엔드 개발  >  C++로 작성된 하나 이상의 비어 있지 않은 하위 배열을 포함하는 숫자의 비트별 AND

C++로 작성된 하나 이상의 비어 있지 않은 하위 배열을 포함하는 숫자의 비트별 AND

PHPz
PHPz앞으로
2023-09-09 09:33:04550검색

C++로 작성된 하나 이상의 비어 있지 않은 하위 배열을 포함하는 숫자의 비트별 AND

배열이 주어진 문제를 해결하려면 최소한 비어 있지 않은 하위 배열의 비트 AND인 가능한 모든 정수를 찾아야 합니다. 간단한 방법

은 비어 있지 않은 가능한 모든 하위 배열을 찾는

것입니다.

  • 배열을 순회할 때 하위 배열에 있는 각 요소의 비트별 AND를 계산합니다.

  • 중복 값을 방지하려면 모든 결과를 컬렉션에 저장하세요.

  • Input : nums[ ] = { 3, 5, 1, 2, 8 }
    Output : { 2, 5, 0, 3, 8, 1 }
    Explanation:
    2 is the bitwise AND of subarray {2},
    5 is the bitwise AND of subarray {5},
    0 is the bitwise AND of subarray {1, 2}, {2, 8} and {1, 2, 8},
    3 is the bitwise AND of subarray {3},
    8 is the bitwise AND of subarray {8},
    1 is the bitwise AND of subarray {1}, {3, 5} and {3, 5, 1}.
    
    Input : nums[ ] = { 2, 6, 3, 8, 1 }
    Output: { 1, 8, 3, 6, 2, 0 }

    Output
  • #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int arr[] ={ 2, 6, 3, 8, 1 };
        int n = sizeof(arr) / sizeof(arr[0]);
        // Declaring set to store result of each AND operation.
        unordered_set<int> result;
        int val;
        // nested loops to traverse through all the possible non empty subarrays.
        for (int i = 0; i < n; ++i){
            for (int j = i, val = INT_MAX; j < n; ++j){
                val = val & arr[j];
                // storing result of AND operation
                result.insert(val);
            }
        }
        cout << "All possible numbers are: ";
        // printing all the values of set.
        for (auto i = result.begin(); i != result.end();i++)
            cout << *i << " ";
        return 0;
    }
위의 코드 설명

은 AND 연산의 모든 결과를 저장하도록 set을 선언합니다.

  • AND 연산을 위해서는 모든 비트를 1로 설정해야 하기 때문에 INT_MAX를 사용하여 "val" 변수를 초기화합니다.

  • 내부 루프는 i번째 인덱스의 가능한 모든 하위 배열을 반복합니다.

  • 각 요소를 서로 및 자체적으로 AND하여 결과 집합에 저장합니다.

  • 모두 인쇄

  • 결론

    이 튜토리얼에서는 이 문제를 해결하는 간단한 방법, 즉 가능한 각 하위 배열에 대해 AND 연산을 계산하는 방법에 대해 논의했습니다. 우리는 또한 이 문제를 해결하기 위해 C++ 프로그램에 대해서도 논의했습니다. 또한 이 코드를 Java, C, Python 등과 같은 다른 언어로 작성할 수도 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

위 내용은 C++로 작성된 하나 이상의 비어 있지 않은 하위 배열을 포함하는 숫자의 비트별 AND의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제