Jadual Kandungan
Tatabahasa
Algoritma
Coretan Kod 1
Kaedah 2
Contoh
Output
Arahan
Kesimpulan
Rumah pembangunan bahagian belakang C++ Pisahkan rentetan binari yang diberikan berdasarkan keadaan tertentu menggunakan C++ untuk memaksimumkan jumlah

Pisahkan rentetan binari yang diberikan berdasarkan keadaan tertentu menggunakan C++ untuk memaksimumkan jumlah

Sep 04, 2023 am 10:21 AM
syarat Berpisah rentetan binari

Pisahkan rentetan binari yang diberikan berdasarkan keadaan tertentu menggunakan C++ untuk memaksimumkan jumlah

Artikel ini bertujuan untuk menyelesaikan masalah algoritma kompleks yang melibatkan pembahagian rentetan binari dengan cara yang memaksimumkan jumlah terkumpul yang diperoleh daripada komponen individu. Kami akan menyediakan pembaca dengan garis besar sintaks yang komprehensif untuk melaksanakan kod dan mencadangkan dua teknik yang mungkin untuk mengatasi cabaran ini. Tambahan pula, kami akan menunjukkan dua kod boleh laku lengkap sebenar berdasarkan kaedah di atas.

Tatabahasa

Sebelum mendalami algoritma, adalah penting untuk kita membiasakan diri dengan struktur kaedah tertentu yang akan kami tunjukkan melalui contoh kod yang akan datang. Kaedah ini mengambil rentetan binari sebagai input dan mengira nilai tertingginya dengan membahagikan input tersebut menggunakan syarat yang telah ditetapkan. Begini cara pendekatan ini kelihatan secara sintaksis -

int maximizeSum(string binaryString) {
   // Implementation of the algorithm goes here
}
Salin selepas log masuk

Algoritma

Sekarang kita harus membincangkan algoritma langkah demi langkah untuk menyelesaikan masalah memaksimumkan jumlah dengan membelah rentetan binari.

Coretan Kod 1

  • Mulakan dua pembolehubah "maxSum" dan "currentSum", kedua-duanya ditetapkan kepada sifar.

  • Melintasi rentetan binari dari kiri ke kanan.

  • Untuk setiap aksara dalam rentetan -

    • Jika aksara ialah '0', tambahkannya pada subrentetan semasa.

    • Jika watak '1' −

      • Kemas kini "maxSum" dengan menambah "currentSum" semasa.

      • Tetapkan semula `currentSum` kepada sifar.

  • Selepas traversal selesai, tambahkan "currentSum" dan "maxSum" akhir.

  • Kembalikan `maxSum` sebagai hasilnya.

Kaedah 1

Cara pertama untuk menyelesaikan masalah ini melibatkan pelaksanaan algoritma di atas. Mari lihat coretan kod yang sepadan -

Contoh

#include <iostream>
#include <string>
using namespace std;

int maximizeSum(string binaryString) {
   int maxSum = 0;
   int currentSum = 0;

   for (char c : binaryString) {
      if (c == '0') {
         currentSum = currentSum * 10 + (c - '0');
      } else {
         maxSum += currentSum;
         currentSum = 0;
      }
   }

   maxSum += currentSum;
   return maxSum;
}

int main() {
   string binaryString = "1001101001";
    
   int result = maximizeSum(binaryString);
   cout << "Maximum sum: " << result << endl;

   return 0;
}
Salin selepas log masuk

Output

Maximum sum: 0
Salin selepas log masuk
Salin selepas log masuk

Arahan

  • Untuk kemudahan, kod pertama sekali termasuk perpustakaan yang diperlukan ("iostream" dan "rentetan") dan menggunakan ruang nama "std".

  • Untuk mengira jumlah maksimum yang boleh dicapai dengan membelah rentetan binari, anda boleh menggunakan fungsi `maximizeSum`, yang mengambil rentetan binari sebagai input dan mengembalikan output.

  • Dua pembolehubah dimulakan dalam fungsi ini - `maxSum` dan `currentSum`. Yang pertama menjejaki nilai maksimum yang dicapai setakat ini, manakala yang terakhir mengira jumlah setiap subrentetan individu.

  • Menggunakan julat untuk gelung, kami mengulangi setiap aksara "c" dalam input "binaryString".

  • Jika aksara semasa "c" ialah "0", kami mendarabkannya dengan 10 dan menambah nilai "0" untuk mengemas kini "currentSum". Ini secara berkesan menambahkan "0" pada subrentetan semasa.

  • Jika aksara semasa "c" ialah "1", ini bermakna subrentetan semasa tamat. Kami menambah `currentSum` kepada `maxSum` untuk mengemas kini jumlah maksimum yang dicapai setakat ini, kemudian menetapkan semula `currentSum` kepada sifar untuk memulakan subrentetan baharu.

  • Selepas melengkapkan gelung, ia dikira dengan menambahkan `currentSum` subrentetan terakhir pada `maxSum` sebelumnya. Fungsi `utama` menyediakan gesaan yang membolehkan pengguna memasukkan rentetan binari.

  • Fungsi "utama" menyediakan gesaan yang membolehkan pengguna memasukkan rentetan binari.

  • Rentetan input dihantar ke fungsi `maximizeSum` dan jumlah maksimum yang dikembalikan disimpan dalam pembolehubah `hasil`.

  • Akhir sekali, jumlah maksimum dipaparkan kepada pengguna.

Kaedah 2

Dalam pendekatan kedua, kami akan mengoptimumkan kod dengan menghapuskan keperluan untuk melakukan pendaraban integer. Sebaliknya, kami akan menggunakan operasi bitwise untuk mengira jumlah semasa. Mari kita lihat coretan kod pendekatan ini -

Contoh

#include <iostream>
#include <string>
using namespace std;

int maximizeSum(string binaryString) {
   int maxSum = 0;
   int currentSum = 0;

   for (char c : binaryString) {
      if (c == '0') {
         currentSum = (currentSum << 1) + 0;
      } else {
         maxSum += currentSum;
         currentSum = 0;
      }
   }

   maxSum += currentSum;
   return maxSum;
}

int main() {
   string binaryString = "10110010"; // Assumed binary string
   int result = maximizeSum(binaryString);
   cout << "Maximum sum: " << result << endl;

   return 0;
}
Salin selepas log masuk

Output

Maximum sum: 0
Salin selepas log masuk
Salin selepas log masuk

Arahan

  • Sama seperti kaedah pertama, kod terlebih dahulu termasuk perpustakaan yang diperlukan dan menggunakan ruang nama `std`.

  • Takrifan fungsi `maximizeSum` dan fungsi `utama` adalah sama seperti dalam kaedah pertama.

  • Dalam fungsi `maximizeSum`, gunakan operator anjakan bit kiri (`

  • Bersamaan dengan darab 2. Kemudian kami menambah 0 kepada `currentSum` kerana aksara semasa ialah "0".

  • Selebihnya kod adalah sama dalam kedua-dua kaedah. Mereka menerima rentetan binari sebagai input. Gunakan fungsi `maximizeSum` untuk mengira jumlah maksimum yang mungkin apabila membelah rentetan. Hasil ini kemudiannya dibentangkan kepada pengguna.

Anda boleh menyusun dan menjalankan kod ini dalam pengkompil C++ Apabila rentetan binari dimasukkan, program akan mengeluarkan jumlah maksimum yang diperoleh dengan membahagikan rentetan mengikut syarat yang ditetapkan.

Kesimpulan

Dalam artikel ini, kami meneroka masalah memaksimumkan jumlah dengan membelah rentetan binari berdasarkan syarat yang diberikan. Kami menyediakan sintaks kaedah yang digunakan dalam contoh kod dan mencadangkan dua cara untuk menyelesaikan masalah. Pada mulanya, aritmetik langsung digunakan, manakala teknik berikut mengoptimumkan pengekodan melalui operasi bitwise. Walaupun kedua-dua kaedah berjaya menyelesaikan masalah, kaedah kedua menawarkan kecekapan yang lebih tinggi kerana ia menghapuskan keperluan untuk pendaraban integer. Dengan memahami dan melaksanakan algoritma ini, anda boleh menyelesaikan masalah serupa dengan cekap melibatkan memaksimumkan jumlah dengan membelah rentetan binari.

Atas ialah kandungan terperinci Pisahkan rentetan binari yang diberikan berdasarkan keadaan tertentu menggunakan C++ untuk memaksimumkan jumlah. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java. Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java. Sep 06, 2023 am 10:21 AM

Bermula dengan cepat: Teknik penggabungan dan pemisahan tatasusunan JSON dalam Java Dalam pembangunan perisian moden, format dan penghantaran data telah menjadi semakin penting. Antaranya, JSON (JavaScriptObjectNotation) ialah format data yang biasa digunakan, terutamanya sesuai untuk interaksi hadapan dan belakang dan penyimpanan data. Dalam pembangunan Java, kita sering perlu berurusan dengan objek JSON dan tatasusunan JSON. Artikel ini menerangkan cara untuk menggabungkan dan memisahkan tatasusunan JSON dalam Java, bersama-sama dengan petua dan contoh untuk melaksanakan operasi ini.

Bagaimana untuk menggunakan PHP ZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Bagaimana untuk menggunakan PHP ZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Jul 21, 2023 am 10:17 AM

Bagaimana untuk menggunakan PHPZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat? Gambaran Keseluruhan: Semasa proses pembangunan, kadangkala kita perlu menggabungkan berbilang pakej mampat menjadi satu, atau membahagikan pakej mampat kepada beberapa pakej. PHP menyediakan sambungan ZipArchive untuk menyelesaikan operasi ini dengan mudah. Artikel ini akan memperkenalkan cara menggunakan PHPZipArchive untuk menggabungkan dan memisahkan berbilang pakej termampat. Menggabungkan berbilang arkib Pertama, kita perlu mencipta arkib baharu dan membukanya. Kemudian, lintasan gelung perlu

Urutan tidak bertambah terpanjang dalam rentetan binari Urutan tidak bertambah terpanjang dalam rentetan binari Sep 07, 2023 pm 11:13 PM

Dalam masalah ini, kita perlu mencari urutan tidak bertambah terpanjang bagi rentetan yang diberikan. Tidak bertambah bermakna aksara sama ada sama atau dalam susunan menurun. Memandangkan rentetan binari hanya mengandungi "0" dan "1", rentetan yang terhasil hendaklah sama ada bermula dengan "1" dan berakhir dengan "0", atau bermula dan berakhir dengan "0" atau "1". Untuk menyelesaikan masalah ini, kami akan mengira awalan "1" dan akhiran "0" pada setiap kedudukan rentetan dan mencari jumlah maksimum awalan "1" dan akhiran "0". Pernyataan Masalah - Kami diberi rentetan binari str. Kita perlu mencari urutan tidak bertambah terpanjang daripada rentetan yang diberikan. Contoh Input–str="010100"Output–4 menggambarkan bukan rekursif terpanjang

Dalam PHP, fungsi fungsi pack() adalah untuk menukar data kepada rentetan binari Dalam PHP, fungsi fungsi pack() adalah untuk menukar data kepada rentetan binari Aug 31, 2023 pm 02:05 PM

Fungsi pack() mengemas data ke dalam rentetan binari. Pek sintaks(format,args) Format parameter - format untuk digunakan. Berikut ialah nilai yang mungkin - a - rentetan berlapik NUL A - rentetan empuk ruang h - rentetan perenambelasan, nibble rendah dahulu H - rentetan perenambelasan, nibble tinggi dahulu c - char C yang ditandatangani - char s yang tidak ditandatangani - ditandatangani pendek (sentiasa 16 bit , pesanan bait mesin) S - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait mesin) n - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian besar) v - pendek tidak ditandatangani (sentiasa 16 bit, susunan bait endian kecil) i - integer bertanda (bergantung pada saiz mesin dan susunan bait) I - Tiada integer yang ditandatangani (bergantung pada

Ditulis dalam C++, cari bilangan pilih atur unik rentetan binari bermula dengan 1 Ditulis dalam C++, cari bilangan pilih atur unik rentetan binari bermula dengan 1 Sep 05, 2023 am 09:01 AM

Dalam masalah yang diberikan, kita diberi rentetan yang terdiri daripada 0 dan 1 kita perlu mencari jumlah bilangan semua pilih atur bermula dengan 1. Oleh kerana jawapannya mungkin jumlah yang besar, kami mengambilnya modulo 1000000007 dan mengeluarkannya. Input:str="10101001001"Output:210Input:str="101110011"Output:56 Kami akan menyelesaikan masalah ini dengan menggunakan beberapa matematik gabungan dan menyediakan beberapa formula. Kaedah Penyelesaian Dalam kaedah ini kita akan mengira bilangan 0 dan 1. Sekarang andaikan n ialah nombor 1 yang muncul dalam rentetan kami dan m ialah bilangan 0 yang muncul dalam rentetan kami

Bagaimana untuk menyelesaikan ralat keadaan gelung Python? Bagaimana untuk menyelesaikan ralat keadaan gelung Python? Jun 24, 2023 pm 07:50 PM

Python ialah bahasa pengaturcaraan peringkat tinggi yang popular yang sangat praktikal dan fleksibel. Walau bagaimanapun, apabila menulis gelung dalam Python, kadangkala anda menghadapi masalah keadaan gelung yang tidak betul. Artikel ini akan memperkenalkan punca dan penyelesaian ralat keadaan gelung dalam Python. 1. Punca ralat keadaan gelung Ralat keadaan gelung biasanya disebabkan oleh ralat dalam nilai pembolehubah atau ralat logik. Prestasi khusus ialah: pembolehubah tidak dikemas kini dengan betul. Jika pembolehubah dalam gelung tidak dikemas kini dengan betul, keadaan gelung akan sentiasa kekal sama. Ungkapan bersyarat adalah salah bentuk. jika fasal

Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari Menyemak sama ada rentetan boleh membentuk rentetan palindrom dengan menukar pasangan aksara pada indeks dengan aksara tidak sama dalam rentetan binari Sep 02, 2023 pm 08:09 PM

Pernyataan Masalah Kami mempunyai rentetan str dan rentetan binari B. Panjang kedua-dua rentetan adalah sama dengan N. Kita perlu menyemak sama ada kita boleh membuat rentetan str rentetan palindrom dengan menukar aksaranya beberapa kali pada mana-mana pasangan indeks yang mengandungi aksara tidak sama dalam rentetan B. Contoh Contoh Input str='AAS' B='101' Output 'YA' Terjemahan Cina bagi Penjelasan ialah: Penjelasan Kita boleh menukar str[1] dan str[2] kerana B[1] dan B[2] tidak sama . Rentetan akhir boleh menjadi 'ASA'. Input str=‘AASS’ B=‘1111’ dan keluaran ‘No’ Terjemahan Bahasa Cina bagi Explanation ialah: Penjelasan bahawa kita tidak boleh membuat string palindrom,

Cara menangani fungsi bil split dan merge sistem perakaunan - Cara melaksanakan bil split dan merge menggunakan PHP Cara menangani fungsi bil split dan merge sistem perakaunan - Cara melaksanakan bil split dan merge menggunakan PHP Sep 25, 2023 am 09:54 AM

Cara mengendalikan fungsi bil split dan merge sistem perakaunan - Cara split dan merge bil menggunakan PHP Pengenalan: Dalam kehidupan seharian, kita sering menghadapi situasi di mana kita perlu memecah dan menggabungkan bil, terutamanya dalam sistem perakaunan Dalam sistem, kedua-dua fungsi ini adalah sangat biasa dan penting. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pemisahan dan penggabungan bil dalam sistem perakaunan, dan memberikan contoh kod khusus. 1. Pelaksanaan fungsi rang undang-undang pecahan (split bill) merujuk kepada proses pembahagian bil asal kepada beberapa sub-bil Setiap sub-bil mengandungi sebahagian daripada

See all articles