Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में प्रथम खिलाड़ी के जीतने की जांच करने का प्रोग्राम जहां खिलाड़ी कैरेक्टर दर कैरेक्टर स्ट्रिंग बना सकते हैं

समस्या विवरण

मान लीजिए हमारे पास शब्दों की एक सूची है। अब एक घोस्ट गेम पर विचार करें जहां दो खिलाड़ी भाग ले सकते हैं। यहां खिलाड़ी बारी-बारी से एक स्ट्रिंग में अक्षर जोड़ते हैं। और बनाई जा रही स्ट्रिंग सूची में किसी शब्द का वैध प्रीफिक्स होनी चाहिए, और जो खिलाड़ी सूची में किसी शब्द को पूरा करता है वह हार जाता है। हमें जांचना है कि यदि दोनों खिलाड़ी इष्टतम खेलते हैं तो पहला खिलाड़ी जीत सकता है या नहीं।

उदाहरण के लिए, यदि इनपुट है words = ["manage", "manager", "min"], तो आउटपुट True होगा, क्योंकि वे इस तरह खेल सकते हैं:

  • m [खिलाड़ी 1]
  • ma [खिलाड़ी 2]
  • man [खिलाड़ी 1]
  • mana [खिलाड़ी 2]
  • manag [खिलाड़ी 1]
  • manage [खिलाड़ी 2] हार

तो खिलाड़ी 1 जीतता है।

हल करने का दृष्टिकोण

इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  1. एक मैप mp परिभाषित करें
  2. words में प्रत्येक शब्द it के लिए:
    • ch := it[0]
    • it को mp[ch] में डालें
  3. mn := अनंत
  4. mp में प्रत्येक कुंजी-मान जोड़ी it के लिए:
    • str := it का मान
    • size := str का आकार
    • यदि size % 2 == 0, तो 1 वापस करें
  5. 0 वापस करें

उदाहरण

#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
  1. - पायथन में पहले खिलाड़ी के अधिक कैंडी लेने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास candies नामक संख्याओं की एक सूची है और दो व्यक्ति सबसे अधिक कैंडीज इकट्ठा करने की दौड़ में हैं। यहां दौड़ टर्न-आधारित है, व्यक्ति 1 पहले शुरू करता है, और प्रत्येक टर्न में वह सामने से या पीछे से कैंडीज ले सकता है। हमें जांचना है कि क्या व्यक्ति 1 दूसरे से अधिक कैंडीज इकट्ठा कर स

  1. - ऑपरेटर रखकर 24 बना सकते हैं या नहीं जांचने का पायथन प्रोग्राम

    मान लीजिए हमारे पास चार संख्याओं की एक सूची है, प्रत्येक संख्या 1 से 9 की रेंज में है, एक निश्चित क्रम में। अब यदि हम संख्याओं के बीच +, -, *, और / (/ पूर्णांक विभाजन को दर्शाता है) ऑपरेटर रखते हैं, और उन्हें ब्रैकेट से समूहित करते हैं, तो हमें जांचना है कि क्या मान 24 प्राप्त करना संभव है या नहीं।

  1. - पायथन में कैंडी हटाने के खेल में पहला खिलाड़ी जीतेगा या नहीं जांचने का प्रोग्राम

    संख्याओं की एक सूची candies दी गई है। दो खिलाड़ी बारी-बारी से खेलते हैं। प्रत्येक चाल में, एक खिलाड़ी लगातार दो समान मान वाली कैंडी हटा सकता है। जो खिलाड़ी चाल नहीं चल सकता, हार जाता है। खिलाड़ी 1 पहले शुरू करता है। जांचें कि खिलाड़ी 1 जीतेगा या नहीं। उदाहरण इनपुट: nums = [2, 2, 5] आउटपुट: True खिल