Diberi tiga jujukan binari A, B dan C panjang N. Setiap urutan mewakili a
Nombor binari. Kita kena cari no. Bilangan lilitan yang diperlukan bagi bit dalam A dan B supaya XOR A dan B memberikan C. A XOR B menjadi C.
Mula-mula marilah kita memahami jadual kebenaran operasi XOR -
X |
Y |
X | 0
1
| X | Y | X
0
1 | 1 |
|
|
| 1 |
1 | 1 | 0 |
Daripada jadual di atas kita perhatikan bahawa untuk nilai yang sama dalam X dan Y, X Hasilnya ialah 0, sebaliknya
Keputusan 1. Jadi ini akan membantu untuk mencari bit yang terbalik dalam A dan B untuk mencapai C. Situasinya ialah
jika A[i]==B[i] dan C[i]==0, tiada flipping diperlukan, - jika A[i]==B[i] dan C[i] = =1, kemudian flip A[i] atau B[i] dan tingkatkan kiraan flip sebanyak 1
- Jika A[i]!=B[i] dan C[i]==0, flip A[i] atau B [i] dan tambahkan kiraan flip sebanyak 1
- Jika A[i]!=B[i] dan C[i]==1, tiada flipping diperlukan. Input
A[]= { 0,0,0,0 } B[]= { 1,0,1,0 } C= {1,1,1,1}
Salin selepas log masuk
reee Dalam program berikut Kaedah yang digunakan adalah seperti berikut
Tatasusunan a[], b[] dan c[] digunakan untuk menyimpan nombor binari.
Fungsi FlipCount(int A[], int B[], int C[], int n) mengambil tatasusunan a, b, c dan panjangnya n sebagai
Masukkan dan kembalikan bilangan lilitan yang diperlukan pada bit A[] atau B[] supaya C[] sama dengan A XOR B
B
Kiraan pembolehubah mewakili kiraan flip dan dimulakan kepada 0.
Gunakan gelung for untuk melelakan setiap bit dalam sel bermula dari i = 0 hingga i
untuk setiap bit A[i] dan B[i]. Jika mereka sama dan C[i] ialah 1, tambahkan kiraan. < /p>
Untuk setiap bit A[i] dan B[i]. Jika mereka tidak sama dan C[i] ialah 0, tambahkan kiraan. Mengembalikan kiraan hasil yang diingini. Contoh Demonstrasi Langsung
Required flips : 2
Salin selepas log masuk
OutputA[0] xor B[0] 0 xor 1 = 1 C[0]=1 no flip
A[1] xor B[1] 0 xor 0 = 0 C[0]=1 flip count=1
A[2] xor B[2] 0 xor 1 = 1 C[0]=1 no flip
A[3] xor B[3] 0 xor 0 = 0 C[0]=1flip count=2
Salin selepas log masuk
Atas ialah kandungan terperinci Dalam C++, terjemah yang berikut ke dalam bahasa Cina: Kira bilangan minimum lilitan bit supaya hasil XOR A dan B adalah sama dengan C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!