मान लीजिए हमारे पास शब्दों की एक सूची है। अब एक घोस्ट गेम पर विचार करें जहां दो खिलाड़ी इसमें भाग ले सकते हैं। यहां खिलाड़ी वैकल्पिक रूप से एक स्ट्रिंग में अक्षरों को जोड़ते हैं। और जो स्ट्रिंग बनाई जा रही है वह सूची में किसी शब्द का एक मान्य उपसर्ग होना चाहिए, और जो खिलाड़ी सूची में किसी भी शब्द का उच्चारण करता है वह हार जाता है। हमें यह जांचना होगा कि पहला खिलाड़ी जीत सकता है या नहीं, अगर दोनों खिलाड़ी बेहतर तरीके से खेल रहे हैं।
इसलिए, यदि इनपुट शब्द =["प्रबंधन", "प्रबंधक", "मिनट"] जैसा है, तो आउटपुट सही होगा, क्योंकि वे इस तरह खेल सकते हैं -
- मी [खिलाड़ी 1]
- मा [खिलाड़ी 2]
- आदमी [खिलाड़ी 1]
- मन [खिलाड़ी 2]
- प्रबंध [खिलाड़ी 1]
- प्रबंधित करें [प्लेयर 2] हारें
तो खिलाड़ी 1 जीत जाता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक नक्शा एमपी परिभाषित करें
- हर शब्द के लिए इसे शब्दों में करें
- ch :=it[0]
- इसे mp[ch] में डालें
- mn :=inf
- एमपी में प्रत्येक की-वैल्यू पेयर के लिए, करें
- 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