


Bilangan minimum lilitan pasangan bukan bersebelahan diperlukan untuk mengalih keluar semua sifar dalam rentetan binari
Dalam rentetan binari, membalikkan sepasang bit bersebelahan boleh mengeluarkan satu 0 daripada rentetan dengan mudah. Walau bagaimanapun, apabila kita perlu mengalih keluar semua 0 daripada rentetan binari, kita juga mungkin perlu membalikkan pasangan bit bukan bersebelahan. Dalam artikel ini, kita akan membincangkan cara untuk menentukan bilangan minimum lilitan pasangan bukan bersebelahan yang diperlukan untuk mengalih keluar semua 0 daripada rentetan binari.
Algoritma
Untuk menyelesaikan masalah ini, kami akan menggunakan algoritma tamak yang mudah. Ideanya adalah untuk sentiasa memilih pasangan bit yang paling jauh antara satu sama lain dan mempunyai sekurang-kurangnya satu 0 di antara. Kita kemudian boleh membalikkan dua bit ini, dengan berkesan mengeluarkan 0 daripada rentetan. Kami mengulangi proses ini sehingga semua 0 telah dialih keluar.
Sekarang mari kita laksanakan algoritma ini dalam C++.
Contoh
#include <iostream> #include <cstring> using namespace std; int main() { string s; s="100101000"; int n = s.size(); int cnt = 0; for (int i = 0; i < n; i++) { if (s[i] == '0') { cnt++; if (i+2 < n && s[i+2] == '0') { i += 2; } else { i++; } } } cout << cnt << endl; return 0; }
Output
3
Perihalan kod
Kod di atas mengambil rentetan binari sebagai input dan mengira bilangan minimum lambungan pasangan bukan bersebelahan yang diperlukan untuk mengalih keluar semua 0 daripada rentetan. Sekarang mari kita lihat kod secara terperinci.
Pertama, kami mengambil rentetan binari sebagai input dan menyimpannya dalam pembolehubah rentetan "s". Kami juga menyimpan saiz rentetan dalam pembolehubah integer "n".
string s; cin >> s; int n = s.size();
Seterusnya, kami memulakan pembolehubah "cnt" untuk menyimpan nombor 0 dalam rentetan. Kami kemudian mengulangi rentetan menggunakan gelung for. Untuk setiap 0 yang ditemui, kami menambah kiraan 0s dan menyemak sama ada dua bit seterusnya juga 0s. Jika ya, kami membalikkan pasangan bit dengan meningkatkan indeks sebanyak 2. Jika tidak, kami hanya membalikkan pasangan bit bersebelahan dengan meningkatkan indeks sebanyak 1.
int cnt = 0; for (int i = 0; i < n; i++) { if (s[i] == '0') { cnt++; if (i+2 < n && s[i+2] == '0') { i += 2; } else { i++; } } }
Akhir sekali, kami mengeluarkan kiraan lilitan pasangan bukan bersebelahan yang diperlukan untuk mengeluarkan semua 0 daripada rentetan.
cout << cnt << endl;
Contoh kes ujian
Mari kita pertimbangkan rentetan binari "100101000". Bilangan minimum lilitan pasangan bukan bersebelahan yang diperlukan untuk mengalih keluar semua 0 daripada rentetan ini boleh dikira menggunakan algoritma di atas.
Pertama, kita menghadapi 0 pada kedudukan 2. Kami membalikkan pasangan (1,3) untuk mendapatkan rentetan "110101000". Kemudian kita menghadapi 0 seterusnya pada kedudukan 5. Kami membalikkan pasangan (1,7) untuk mendapatkan rentetan "111101000". Kemudian kita menghadapi 0 seterusnya pada kedudukan 8. Kami membalikkan pasangan (1,9) untuk mendapatkan rentetan "111111000". Sekarang semua 0 telah dialih keluar daripada rentetan.
Bilangan lilitan pasangan bukan bersebelahan yang diperlukan untuk mengeluarkan semua 0 daripada rentetan ialah 3. Kita boleh mengesahkan ini dengan menjalankan kod C++ di atas pada rentetan input "100101000".
Kesimpulan
Dalam artikel ini, kami membincangkan cara menentukan bilangan minimum lilitan pasangan bukan bersebelahan yang diperlukan untuk mengalih keluar semua 0 daripada rentetan binari. Kami menggunakan algoritma tamak mudah untuk menyelesaikan masalah ini dan melaksanakannya dalam kod C++. Kami juga menyediakan contoh kes ujian untuk menggambarkan cara algoritma berfungsi.
Atas ialah kandungan terperinci Bilangan minimum lilitan pasangan bukan bersebelahan diperlukan untuk mengalih keluar semua sifar dalam rentetan binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Pemain boleh menterbalikkan skrin semasa bermain permainan dalam Eye of Deep Space Ramai pengguna tidak tahu cara menyelak skrin dalam Eye of Deep Space Pemain perlu menghidupkan pilihan untuk menyokong putaran skrin di pusat kawalan dan kemudian kembali ke permainan. Cara menyelak skrin Deep Space Eye 1. Buka skrin telefon anda dan luncurkan ke atas dari bahagian bawah skrin menggunakan jari anda. 2. Kemudian anda boleh membuka pusat kawalan Di sudut kanan atas pusat kawalan adalah suis untuk mematikan putaran skrin. 3. Klik padanya untuk menghidupkan putaran skrin Pada masa ini, anda akan mendapati bahawa ikon mengawal putaran diserlahkan dalam pusat kawalan. 4. Apabila anda membuka aplikasi yang menyokong putaran skrin, ia akan berputar apabila orientasi telefon berubah.

Aritmetik binari ialah kaedah operasi berdasarkan nombor binari Operasi asasnya termasuk penambahan, penolakan, pendaraban dan pembahagian. Selain operasi asas, aritmetik binari juga termasuk operasi logik, operasi anjakan dan operasi lain. Operasi logik termasuk DAN, ATAU, NOT dan operasi lain, dan operasi anjakan termasuk operasi anjakan kiri dan anjakan kanan. Operasi ini mempunyai peraturan dan keperluan operan yang sepadan.

Kaedah dan teknik bagaimana untuk mencapai kesan membalikkan imej melalui CSS tulen Prakata: Dalam pembangunan web, kita selalunya perlu menambah beberapa kesan animasi pada halaman web untuk meningkatkan pengalaman pengguna. Kesan membalikkan gambar adalah salah satu kesan biasa. Ia bukan sahaja mudah dan mudah untuk merealisasikan membalikkan imej melalui CSS tulen, tetapi juga mengelakkan overhed tambahan yang disebabkan oleh penggunaan bahasa lain seperti JavaScript. Artikel ini akan memperkenalkan cara untuk mencapai kesan flip imej melalui CSS tulen, dan memberikan contoh kod khusus. 1. Menggunakan CSS3 transfo

Nombor binari diwakili oleh 1s dan 0s. Sistem nombor perenambelasan 16-bit ialah {0,1,2,3…..9,A(10),B(11),…F(15)} untuk menukar daripada perwakilan binari kepada perenambelasan Mewakili bahawa bit ID rentetan dikumpulkan ke dalam ketulan 4-bit, dipanggil nibbles bermula dari bahagian yang paling tidak ketara. Setiap blok digantikan dengan nombor heksadesimal yang sepadan. Mari kita lihat contoh untuk mendapatkan pemahaman yang jelas tentang perwakilan nombor heksadesimal dan perduaan. 001111100101101100011101 3 E 5 B&nb

EDVAC mempunyai dua penambahbaikan utama: satu ialah penggunaan binari, dan satu lagi ialah penyiapan program yang disimpan, yang secara automatik boleh maju dari satu arahan program ke seterusnya, dan operasinya boleh diselesaikan secara automatik melalui arahan. "Arahan" termasuk data dan program, yang dimasukkan ke dalam peranti memori mesin dalam bentuk kod Iaitu, peranti memori yang sama yang menyimpan data digunakan untuk menyimpan arahan untuk melaksanakan operasi -dipanggil atur cara tersimpan.

HTML, CSS dan jQuery: Bina kesan flip kad yang cantik Dalam reka bentuk web, aplikasi kesan khas boleh meningkatkan interaktiviti dan kesan visual halaman. Kesan flipping kad ialah kesan khas biasa yang boleh membawa pengguna pengalaman menyemak imbas yang lebih jelas dan menarik. Artikel ini akan memperkenalkan cara menggunakan HTML, CSS dan jQuery untuk membina kesan flip kad yang cantik, dan memberikan contoh kod khusus. Pertama, kita perlu menyediakan struktur asas HTML. Kami akan menggunakan dua elemen div untuk mewakili bahagian hadapan kad

Bagaimana untuk membaca fail binari di Golang? Fail binari ialah fail yang disimpan dalam bentuk binari yang mengandungi data yang boleh dikenali dan diproses oleh komputer. Di Golang, kita boleh menggunakan beberapa kaedah untuk membaca fail binari dan menghuraikannya ke dalam format data yang kita inginkan. Berikut akan memperkenalkan cara membaca fail binari di Golang dan memberikan contoh kod tertentu. Pertama, kita perlu membuka fail binari menggunakan fungsi Buka dari pakej os, yang akan mengembalikan objek fail. Kemudian kita boleh buat

计算机采用二进制的主要原因:1、计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示;2、二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。
