2044. Kira Bilangan Subset Bitwise-OR Maksimum
Kesukaran: Sederhana
Topik: Tatasusunan, Menjejak Belakang, Manipulasi Bit, Penghitungan
Memandangkan nombor tatasusunan integer, cari maksimum yang mungkin bitwise ATAU subset nombor dan kembalikan nombor bilangan subset bukan kosong yang berbeza dengan bitwise maksimum ATAU.
Suatu tatasusunan a ialah subset tatasusunan b jika a boleh diperolehi daripada b dengan memadamkan beberapa (mungkin sifar) unsur b. Dua subset dianggap berbeza jika indeks unsur yang dipilih adalah berbeza.
Bitwise OR tatasusunan a adalah sama dengan a[0] OR a[1] OR ... ATAU a[a.length - 1] (0-diindeks).
Contoh 1:
Contoh 2:
Contoh 3:
Kekangan:
Petunjuk:
Penyelesaian:
Kita boleh ikut langkah ini:
Kira Bitwise Maksimum OR: Bitwise OR maksimum subset boleh ditentukan dengan melakukan operasi OR bitwise merentas semua elemen tatasusunan. Ini memberikan kita bitwise maksimum yang mungkin ATAU.
Enumerate All Subsets: Memandangkan saiz array adalah kecil (sehingga 16), kita boleh menghitung semua subset yang mungkin menggunakan teknik manipulasi bit. Untuk tatasusunan saiz n, terdapat 2^n subset yang mungkin.
Kira Subset Sah: Untuk setiap subset, hitung bitwise ATAU dan semak sama ada ia sepadan dengan bitwise maksimum ATAU. Jika ya, tambahkan pembilang.
Mari laksanakan penyelesaian ini dalam PHP: 2044. Kira Bilangan Subset Bitwise-OR Maksimum
Penjelasan:
Maksimum Bitwise ATAU Pengiraan:
- Kami menggunakan gelung untuk mengira bitwise OR maksimum tatasusunan dengan melakukan OR bitwise pada setiap elemen.
Penghitungan Subset:
- Kami menggelungkan semua nombor dari 1 hingga 2^n - 1 (dengan n ialah panjang nombor), mewakili semua subset bukan kosong.
- Untuk setiap nombor, kami menyemak setiap bit untuk melihat elemen yang disertakan dalam subset.
Kiraan Subset yang Sah:
- Selepas mengira bitwise ATAU untuk subset semasa, kami menyemak sama ada ia sama dengan maxOR. Jika ya, kami menambah kaunter kami.
Penyelesaian ini cekap memandangkan kekangan dan harus berfungsi dengan baik untuk tatasusunan bersaiz sehingga 16, menghasilkan paling banyak 65,535 subset untuk dinilai.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Kira Bilangan Subset Bitwise-OR Maksimum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!