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

C++ में कार्ड फ़्लिपिंग गेम

मान लीजिए कि एक टेबल पर एन कार्ड हैं, प्रत्येक कार्ड के दोनों तरफ एक सकारात्मक पूर्णांक मुद्रित (संभवतः अलग)। हमें कितने भी कार्ड फ्लिप करने होते हैं, और उसके बाद हम एक कार्ड चुनते हैं। यदि चुने हुए कार्ड के पीछे की ओर X का अंक किसी कार्ड के सामने नहीं है, तो संख्या X को शुभ माना जाता है। हमें वह छोटी से छोटी संख्या ज्ञात करनी है जो अच्छी हो? जब कोई संख्या अच्छी न हो, तो 0 लौटाएँ। यहाँ, फ़्रंट [i] और पीछे [i] कार्ड i के आगे और पीछे की संख्या का प्रतिनिधित्व करते हैं। एक फ्लिप आगे और पीछे के नंबरों की अदला-बदली करेगा, इसलिए आगे का मान अब पीछे और इसके विपरीत है।

तो अगर इनपुट मोर्चों की तरह है =[1,2,4,4,7] और बैक =[1,3,4,1,3], तो आउटपुट 2 होगा। तो अगर हम दूसरा कार्ड फ्लिप करते हैं, सामने का मूल्य [1,3,4,4,7] होगा, और पीछे का मूल्य [1,2,4,1,3] होगा। हम दूसरा कार्ड चुनेंगे, जिसके पीछे नंबर 2 होगा, और यह किसी कार्ड के सामने नहीं है, इसलिए 2 एक अच्छी संख्या है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • एक सेट परिभाषित करें s, n :=मोर्चों का आकार, ret :=inf
  • मैं के लिए 0 से n - 1 की सीमा में
    • अगर फ़्रंट[i] =पीछे[i], तो फ़्रंट[i] को s में डालें
  • मैं के लिए 0 से n - 1 की सीमा में
    • अगर फ़्रंट्स[i] सेट में हैं तो रिट :=न्यूनतम रिट और फ़्रंट्स[i]
  • मैं के लिए 0 से n - 1 की सीमा में
    • यदि बैक [i] सेट में नहीं है तो रिट :=न्यूनतम रिट और बैक [i]
  • रिटर्न 0 जब रिट =इंफ, अन्यथा रेट करें।

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int flipgame(vector<int>& fronts, vector<int>& backs) {
      set <int> s;
      int n = fronts.size();
      int ret = INT_MAX;
      for(int i = 0; i < n; i++){
         if(fronts[i] == backs[i])s.insert(fronts[i]);
      }
      for(int i = 0; i <n; i++ ){
         if(s.count(fronts[i]) == 0) ret = min(ret, fronts[i]);
      }
      for(int i = 0; i <n; i++ ){
         if(s.count(backs[i]) == 0) ret = min(ret, backs[i]);
      }
      return ret == INT_MAX? 0 : ret;
   }
};
main(){
   vector<int> v1 = {1,2,4,4,7};
   vector<int> v2 = {1,3,4,1,3};
   Solution ob;
   cout << (ob.flipgame(v1, v2));
}

इनपुट

[1,2,4,4,7]
[1,3,4,1,3]

आउटपुट

2

  1. सी++ में जंप गेम IV

    मान लीजिए कि हमारे पास arr नामक पूर्णांकों की एक सरणी है। हम शुरुआत में इंडेक्स 0 पर हैं। एक चरण में हम इंडेक्स i से i + x पर जा सकते हैं जहां:i + x =0. j जहां:arr[i] और arr[j] समान हैं और i और j समान नहीं हैं। यहाँ n सरणी का आकार है। सरणी के अंतिम सूचकांक तक पहुंचने के लिए हमें न्यूनतम चरणों की संख

  1. सी++ में जंप गेम वी

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है जिसे arr और एक पूर्णांक d कहा जाता है। एक चरण में हम इंडेक्स i से − . पर जा सकते हैं i + x जहां:i + x

  1. सी++ में स्टोन गेम

    मान लीजिए कि हमारे पास दो खिलाड़ी एलेक्स और ली हैं, वे पत्थरों के ढेर के साथ एक खेल खेलते हैं। ढेरों की संख्या सम संख्या में होती है जो एक पंक्ति में व्यवस्थित होती हैं, और प्रत्येक ढेर में कुछ संख्या में पत्थरों के ढेर होते हैं [i]। खेल का उद्देश्य सबसे अधिक पत्थरों के साथ समाप्त करना है। जब पत्थरो