Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2023-09-09 09:33:04
ke hadapan
633 orang telah melayarinya

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 }
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

All possible numbers are: 1 8 3 6 0 2
Salin selepas log masuk
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 Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan