Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cari pemain terakhir untuk mengalih keluar sebarang aksara dari permulaan rentetan binari

Cari pemain terakhir untuk mengalih keluar sebarang aksara dari permulaan rentetan binari

王林
王林ke hadapan
2023-08-27 21:17:06517semak imbas

Cari pemain terakhir untuk mengalih keluar sebarang aksara dari permulaan rentetan binari

Apabila berurusan dengan rentetan binari dalam C++, anda selalunya perlu mengenal pasti corak atau pemain tertentu yang melakukan operasi tertentu. Tugas biasa ialah mencari pemain terakhir untuk mengalih keluar sebarang aksara dari permulaan rentetan binari. Dalam artikel ini, kami membincangkan algoritma untuk menyelesaikan masalah ini dan menyediakan pelaksanaan contoh C++.

Pernyataan Masalah

Memandangkan rentetan binari s dan dua pemain A dan B, pemain bergilir-gilir mengalih keluar sebarang aksara pada permulaan rentetan. Pemain yang mengeluarkan watak terakhir menang. Jika kedua-dua pemain bermain yang terbaik, ia ditentukan pemain mana yang akan memenangi permainan.

Algoritma

Untuk menyelesaikan masalah ini, kita boleh menggunakan pemerhatian yang mudah. Pemain yang memulakan permainan dengan nombor ganjil 1 akan sentiasa menang, dan pemain yang memulakan permainan dengan nombor genap 1 akan sentiasa kalah.

Kita boleh mengira bilangan 1 dalam rentetan binari s dan menentukan pemain yang memulakan permainan. Jika nombor 1 ialah nombor ganjil, pemain A memulakan permainan dan menang. Jika nombor 1 genap, pemain B memulakan permainan dan kalah.

Contoh

Ini adalah pelaksanaan algoritma dalam C++ -

#include <iostream>
#include <string>

using namespace std;

string findLastPlayer(string s) {
   int countOnes = 0;
   for (int i = 0; i < s.length(); i++) {
      if (s[i] == '1') {
         countOnes++;
      }
   }
   if (countOnes % 2 == 1) {
      return "Player A";
   } else {
      return "Player B";
   }
}

int main() {
   string s = "1101001";
   string lastPlayer = findLastPlayer(s);
   cout << "The last player to remove a character is " << lastPlayer << "." << endl;
   return 0;
}

Output

The last player to remove a character is Player B.

Dalam pelaksanaan ini, kami menggunakan gelung untuk mengira bilangan 1 dalam rentetan binari s. Kami memulakan pengiraan pembilang kepada 0 dan menambahnya untuk setiap aksara bersamaan dengan "1". Kami kemudian menyemak sama ada countOnes ganjil atau genap dan mengembalikan nama pemain yang menang.

Kes Ujian

Mari uji fungsi ini dengan contoh. Katakan kita mempunyai rentetan binari berikut -

string s = "101010";

Kita boleh memanggil fungsi findLastPlayer() menggunakan s sebagai parameter:

string lastPlayer = findLastPlayer(s);

Fungsi ini akan mengembalikan "Pemain B" kerana nombor 1 dalam rentetan s ialah nombor genap dan Pemain B memulakan permainan dan akan kalah. Jika kita mempunyai nombor ganjil 1 dalam rentetan binari, fungsi itu akan mengembalikan "Pemain A" kerana Pemain A akan memulakan permainan dan menang.

Kesimpulan

Ringkasnya, kami mencadangkan algoritma untuk menyelesaikan masalah mencari pemain yang terakhir memadam sebarang aksara dari permulaan rentetan binari dalam C++. Dengan mengira bilangan 1 dalam rentetan, kita boleh menentukan pemain mana yang memulakan permainan dan siapa yang akan menang. Kami juga menyediakan contoh pelaksanaan algoritma C++ bersama kes ujian untuk menunjukkan penggunaannya. Dengan mengikuti langkah-langkah yang digariskan dalam artikel ini, anda kini boleh menentukan pemain terakhir untuk mengalih keluar aksara daripada rentetan binari dalam program C++ anda.

Atas ialah kandungan terperinci Cari pemain terakhir untuk mengalih keluar sebarang aksara dari permulaan rentetan binari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam