Jadual Kandungan
Memahami penyataan masalah
kaedah
Pelaksanaan C++
Contoh
Output
Kes Ujian
KESIMPULAN
Rumah pembangunan bahagian belakang C++ Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong)

Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong)

Sep 16, 2023 am 10:21 AM
pengaturcaraan Jelas rentetan binari Bilangan minimum

Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong)

Dalam artikel ini, kita akan membincangkan masalah menarik yang berkaitan dengan bidang manipulasi rentetan dan teori permainan: "Kosongkan rentetan binari dengan mengeluarkan subrentetan bukan kosong" , cari pemain dengan baki 0 ​​yang paling sedikit." Soalan ini meneroka konsep menggunakan rentetan binari untuk permainan kompetitif. Matlamat kami adalah untuk mencari pemain dengan baki 0 ​​paling sedikit pada penghujung permainan. Kami akan membincangkan isu ini, menyediakan pelaksanaan kod C++, dan menerangkan konsep melalui contoh.

Memahami penyataan masalah

Dua pemain diberikan rentetan binari dan mereka bermain secara bergilir-gilir. Pada setiap giliran, pemain mengalih keluar subrentetan bukan kosong yang mengandungi sekurang-kurangnya satu "1". Permainan berakhir apabila rentetan menjadi kosong atau tiada "1" dalam rentetan. Pemain yang tidak dapat mengambil tindakan akan kehilangan permainan. Tugasnya adalah untuk mencari pemain dengan bilangan 0 akhir terkecil.

kaedah

Untuk menyelesaikan masalah ini, kita perlu mengira bilangan segmen yang dipisahkan dengan '0' yang mempunyai sekurang-kurangnya satu '1'. Pemain yang memulakan permainan sentiasa memilih serpihan dengan '1' terbanyak. Oleh itu, melainkan bilangan serpihan ialah nombor genap, pemain pertama sentiasa boleh memastikan bahawa mereka mengeluarkan lebih banyak '1' daripada pemain kedua. Dalam kes ini, kedua-dua pemain boleh mengeluarkan bilangan '1' yang sama.

Pelaksanaan C++

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Berikut ialah kod C++ untuk melaksanakan strategi di atas:

#include<bits/stdc++.h>
using namespace std;

int findWinner(string s) {
   int segments = 0;
   for (int i = 0; i < s.size();) {
      if (s[i] == '1') {
         segments++;
         while (i < s.size() && s[i] == '1') {
               i++;
         }
      }
      i++;
   }
   return segments % 2 == 0 ? 2 : 1;
}

int main() {
   string s = "100101";
   int winner = findWinner(s);
   cout << "Player " << winner << " wins";
   return 0;
}
Salin selepas log masuk

Output

Player 1 wins
Salin selepas log masuk

Kod ini berulang pada rentetan, mengira bilangan segmen, dan kemudian menyemak sama ada bilangan segmen adalah genap atau ganjil untuk menentukan pemenang.

Kes Ujian

Mari kita pertimbangkan rentetan binari "100101". Serpihan dalam rentetan ini ialah "1", "1" dan "1". Oleh kerana bilangan keping adalah nombor ganjil, pemain pertama akan memenangi permainan kerana mereka dapat mengeluarkan lebih banyak '1' daripada pemain kedua.

KESIMPULAN

Dalam artikel ini, kami mengkaji masalah mencari pemain dengan sekurang-kurangnya 0s selepas mengosongkan rentetan binari dengan mengalih keluar subrentetan bukan kosong. Masalah ini membentangkan persimpangan yang menarik antara manipulasi rentetan dan teori permainan. Kami meneroka masalah, menggariskan pendekatan untuk menyelesaikannya, menyediakan pelaksanaan kod C++ dan menghuraikan konsep menggunakan contoh.

Atas ialah kandungan terperinci Cari pemain dengan bilangan sifar paling sedikit selepas mengosongkan rentetan binari (dengan mengalih keluar subrentetan bukan kosong). 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Alih keluar nilai pendua daripada tatasusunan PHP menggunakan ungkapan biasa Alih keluar nilai pendua daripada tatasusunan PHP menggunakan ungkapan biasa Apr 26, 2024 pm 04:33 PM

Cara mengalih keluar nilai pendua daripada tatasusunan PHP menggunakan ungkapan biasa: Gunakan ungkapan biasa /(.*)(.+)/i untuk memadankan dan menggantikan pendua. Lelaran melalui elemen tatasusunan dan semak padanan menggunakan preg_match. Jika ia sepadan, langkau nilai jika tidak, tambahkannya pada tatasusunan baharu tanpa nilai pendua.

Untuk apa pengaturcaraan dan apakah kegunaan mempelajarinya? Untuk apa pengaturcaraan dan apakah kegunaan mempelajarinya? Apr 28, 2024 pm 01:34 PM

1. Pengaturcaraan boleh digunakan untuk membangunkan pelbagai perisian dan aplikasi, termasuk tapak web, aplikasi mudah alih, permainan dan alat analisis data. Bidang aplikasinya sangat luas, meliputi hampir semua industri, termasuk penyelidikan saintifik, penjagaan kesihatan, kewangan, pendidikan, hiburan, dll. 2. Pembelajaran pengaturcaraan boleh membantu kita meningkatkan kemahiran menyelesaikan masalah dan kemahiran berfikir logik. Semasa pengaturcaraan, kita perlu menganalisis dan memahami masalah, mencari penyelesaian dan menterjemahkannya ke dalam kod. Cara berfikir ini boleh memupuk kebolehan analitikal dan abstrak kita dan meningkatkan keupayaan kita untuk menyelesaikan masalah praktikal.

Bina aplikasi berasaskan pelayar dengan Golang Bina aplikasi berasaskan pelayar dengan Golang Apr 08, 2024 am 09:24 AM

Bina aplikasi berasaskan pelayar dengan Golang Golang digabungkan dengan JavaScript untuk membina pengalaman bahagian hadapan yang dinamik. Pasang Golang: Lawati https://golang.org/doc/install. Sediakan projek Golang: Cipta fail bernama main.go. Menggunakan GorillaWebToolkit: Tambahkan kod GorillaWebToolkit untuk mengendalikan permintaan HTTP. Cipta templat HTML: Cipta index.html dalam subdirektori templat, yang merupakan templat utama.

Koleksi teka-teki pengaturcaraan C++: merangsang pemikiran dan meningkatkan kemahiran pengaturcaraan Koleksi teka-teki pengaturcaraan C++: merangsang pemikiran dan meningkatkan kemahiran pengaturcaraan Jun 01, 2024 pm 10:26 PM

Teka-teki pengaturcaraan C++ meliputi algoritma dan konsep struktur data seperti jujukan Fibonacci, faktorial, jarak Hamming, nilai maksimum dan minimum tatasusunan, dll. Dengan menyelesaikan teka-teki ini, anda boleh menyatukan pengetahuan C++ dan meningkatkan pemahaman algoritma dan kemahiran pengaturcaraan.

Penyelesaian Masalah dengan Python: Buka Kunci Penyelesaian Berkuasa sebagai Pengekod Pemula Penyelesaian Masalah dengan Python: Buka Kunci Penyelesaian Berkuasa sebagai Pengekod Pemula Oct 11, 2024 pm 08:58 PM

Pythonmemperkasakan pemula dalam menyelesaikan masalah.Sintaksnya yang mesra pengguna, perpustakaan luas, dan ciri-ciri seperti pembolehubah, pernyataan bersyarat, dan pembangunan kod yang cekap boleh dilonggarkan. Daripada mengurus data untuk mengawal aliran program dan melaksanakan tugasan berulang, Pythonprovid

Kunci Pengekodan: Membuka Kunci Kuasa Python untuk Pemula Kunci Pengekodan: Membuka Kunci Kuasa Python untuk Pemula Oct 11, 2024 pm 12:17 PM

Python ialah bahasa pengenalan pengaturcaraan yang ideal untuk pemula melalui kemudahan pembelajaran dan ciri yang berkuasa. Asasnya termasuk: Pembolehubah: digunakan untuk menyimpan data (nombor, rentetan, senarai, dll.). Jenis data: Mentakrifkan jenis data dalam pembolehubah (integer, titik terapung, dll.). Operator: digunakan untuk operasi matematik dan perbandingan. Aliran kawalan: Kawal aliran pelaksanaan kod (penyataan bersyarat, gelung).

Dapatkan modul Go dengan cepat dan mudah dengan Go Get Dapatkan modul Go dengan cepat dan mudah dengan Go Get Apr 07, 2024 pm 09:48 PM

Melalui GoGet, anda boleh mendapatkan modul Go dengan cepat dan mudah Langkah-langkahnya adalah seperti berikut: Jalankan dalam terminal: goget[module-path], dengan modul-path ialah laluan modul. GoGet memuat turun modul dan kebergantungannya secara automatik. Lokasi pemasangan ditentukan oleh pembolehubah persekitaran GOPATH.

Gunakan mekanisme pembalut ralat dan pelepasan golang untuk pengendalian ralat Gunakan mekanisme pembalut ralat dan pelepasan golang untuk pengendalian ralat Apr 25, 2024 am 08:15 AM

Pengendalian ralat dalam Go termasuk ralat pembalut dan ralat buka bungkus. Ralat pembalut membenarkan satu jenis ralat dibalut dengan yang lain, memberikan konteks yang lebih kaya untuk ralat itu. Kembangkan ralat dan lalui rantaian ralat bersarang untuk mencari ralat peringkat terendah untuk penyahpepijatan yang mudah. Dengan menggabungkan kedua-dua teknologi ini, keadaan ralat boleh dikendalikan dengan berkesan, menyediakan konteks ralat yang lebih kaya dan keupayaan penyahpepijatan yang lebih baik.

See all articles