Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมตรวจสอบว่าผู้เล่นคนแรกสามารถชนะเกมที่ผู้เล่นสามารถสร้าง string char by char ใน C++ . ได้หรือไม่


สมมติว่าเรามีรายการคำ ตอนนี้ให้พิจารณาเกมผีที่ผู้เล่นสองคนสามารถเข้าร่วมได้ ที่นี่ผู้เล่นสลับตัวอักษรต่อท้ายสตริง และสตริงที่ทำขึ้นต้องเป็นคำนำหน้าที่ถูกต้องของคำในรายการ และผู้เล่นที่สะกดคำในรายการจะแพ้ เราต้องเช็คก่อนว่าผู้เล่นคนแรกจะชนะหรือไม่ถ้าผู้เล่นทั้งคู่เล่นได้อย่างเต็มประสิทธิภาพ

ดังนั้นหากอินพุตเป็นเหมือนคำ =["จัดการ", "ผู้จัดการ", "นาที"] ผลลัพธ์จะเป็น True เนื่องจากสามารถเล่นได้ -

  • m [ผู้เล่น 1]
  • หม่าล่า [ผู้เล่น 2]
  • ผู้ชาย [ผู้เล่น 1]
  • มานา [ผู้เล่น 2]
  • จัดการ [ผู้เล่น 1]
  • จัดการ [ผู้เล่น 2] แพ้

ผู้เล่น 1 คนจึงชนะ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดหนึ่ง mp mp
  • สำหรับแต่ละคำในคำ ทำ
    • ch :=it[0]
    • แทรกลงใน mp[ch]
  • mn :=inf
  • สำหรับการจับคู่คีย์-ค่าแต่ละรายการใน mp ให้ทำ
    • str :=คุณค่าของมัน
    • ขนาด :=ขนาดของ str
    • ถ้า mod ขนาด 2 เท่ากับ 0 แล้ว −
      • คืน 1
    • คืน 0

ตัวอย่าง (C++)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<string> &words) {
   map<char, set<string>> mp;
   for (auto &it : words) {
      char ch = it[0];
      mp[ch].insert(it);
   }
   int mn = INT_MAX;
   for (auto &it : mp) {
      string str = *(it.second.begin());
      int size = str.size();
      if (size % 2 == 0)
         return 1;
   }
   return 0;
}
int main(){
   vector<string> v = {"manage", "manager", "min"};
   cout << solve(v);
}

อินพุต

{"manage", "manager", "min"}

ผลลัพธ์

1