Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bitwise DAN nombor yang mengandungi sekurang-kurangnya satu subarray bukan kosong yang ditulis dalam C++

Bitwise DAN nombor yang mengandungi sekurang-kurangnya satu subarray bukan kosong yang ditulis dalam C++

PHPz
PHPzke hadapan
2023-09-09 09:33:04475semak imbas

Bitwise DAN nombor yang mengandungi sekurang-kurangnya satu subarray bukan kosong yang ditulis dalam C++

Untuk menyelesaikan masalah yang diberikan tatasusunan, kita perlu mencari semua kemungkinan integer yang sekurang-kurangnya bitwise DAN subarray tidak kosong, seperti -

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 }

Kaedah untuk mencari penyelesaian

boleh digunakan kaedah mudah ialah,

  • untuk mencari semua kemungkinan subarray bukan kosong.

  • Apabila melintasi tatasusunan, kirakan bitwise DAN setiap elemen dalam subarray.

  • Untuk mengelakkan nilai pendua, simpan semua hasil dalam koleksi.

Contoh

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

Output

All possible numbers are: 1 8 3 6 0 2

Penerangan kod di atas

  • mengisytiharkan ditetapkan untuk menyimpan semua hasil operasi DAN.

  • Mulakan pembolehubah "val" menggunakan INT_MAX kerana kita perlu menetapkan semua bit kepada 1 untuk operasi DAN. .

  • Cetak Semua

  • Kesimpulan

    Dalam tutorial ini, kami membincangkan cara mudah untuk menyelesaikan masalah ini, iaitu mengira operasi DAN bagi setiap subbaris yang mungkin. Kami juga membincangkan program C++ untuk menyelesaikan masalah ini. Juga, anda boleh menulis kod ini dalam mana-mana bahasa lain seperti Java, C, Python, dll. Kami harap anda mendapati tutorial ini membantu.

Atas ialah kandungan terperinci Bitwise DAN nombor yang mengandungi sekurang-kurangnya satu subarray bukan kosong yang ditulis dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam