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

C++ में आउटपुट प्रतियोगिता मैच

मान लीजिए कि हमारे पास n टीमें हैं और हम हमेशा कमजोर टीम के साथ खेलने के लिए बल्कि मजबूत टीम की व्यवस्था करते हैं, जैसे रैंक 1 टीम को रैंक n वाली टीम के साथ खेलना, यह रणनीति प्रतियोगिता को और अधिक रोचक बनाने के लिए है। अब हमें उनके अंतिम प्रतियोगिता मैचों को एक स्ट्रिंग के रूप में खोजना होगा।

इन टीमों को 1 से n तक धनात्मक पूर्णांकों के रूप में दिया जाता है, जो उनकी प्रारंभिक रैंक को दर्शाता है। तो, रैंक 1 सबसे मजबूत टीम है, और रैंक n सबसे कमजोर टीम है। हम प्रतियोगिता टीम पेयरिंग का प्रतिनिधित्व करने के लिए कोष्ठक और अल्पविराम का उपयोग करेंगे - कोष्ठक ('(', ')') युग्मन के लिए और अल्पविराम (',') विभाजन के लिए। प्रत्येक दौर में जोड़ी बनाने की प्रक्रिया के दौरान, हमें हमेशा कमजोर जोड़ी के साथ बल्कि मजबूत एक जोड़ी बनाने की रणनीति का पालन करना होगा।

तो, अगर इनपुट 4 जैसा है, तो आउटपुट होगा ((1,4), (2,3))

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

  • एक फंक्शन क्रिएट () को परिभाषित करें, इसमें लो, हाई, एरे v2, ऐरे v1,

    लगेगा
  • यदि कम>=उच्च, तो −

    • वापसी

  • सम्मिलित करें "(" concatenate v1[low] concatenate "," concatenate v1[high] concatenate ") v2 के अंत में

  • create(low + 1, high - 1, v2, v1)

  • मुख्य विधि से निम्न कार्य करें -

  • सरणियों को परिभाषित करें v1, v2

  • इनिशियलाइज़ i :=1 के लिए, जब i <=n, अपडेट करें (i को 1 से बढ़ाएँ), करें -

    • v1 के अंत में कन्वर्ट i को स्ट्रिंग में डालें

  • जबकि v1> 1 का आकार −

    . करें
    • create(0, size of v1, v2, v1)

    • v1:=v2

    • v2 सरणी साफ़ करें

  • v1 का अंतिम तत्व लौटाएं

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   void create(int low, int high, vector <string>& v2, vector <string>& v1){
      if (low >= high)
         return;
      v2.push_back("(" + v1[low] + "," + v1[high] + ")");
      create(low + 1, high - 1, v2, v1);
   }
   string findContestMatch(int n) {
      vector v1, v2;
      for (int i = 1; i <= n; i++) {
         v1.push_back(to_string(i));
      }
      while (v1.size() > 1) {
         create(0, v1.size() - 1, v2, v1);
         v1 = v2;
         v2.clear();
      }
      return v1.back();
   }
};
main(){
   Solution ob;
   cout << (ob.findContestMatch(4));
}

इनपुट

4

आउटपुट

((1,4),(2,3))

  1. सी ++ स्ट्रीम क्लास स्ट्रक्चर

    C++ स्ट्रीम में प्रोग्राम थ्रेड और i/o के बीच स्थानांतरित वर्णों की धारा को संदर्भित करता है। स्ट्रीम कक्षाएं सी ++ में फाइलों और आईओ उपकरणों पर इनपुट और आउटपुट ऑपरेशंस के लिए उपयोग किया जाता है। इन वर्गों में विशिष्ट विशेषताएं हैं और कार्यक्रम के इनपुट और आउटपुट को संभालने के लिए। iostream.h पुस्

  1. C++ में बेसिक इनपुट/आउटपुट

    C++ मानक पुस्तकालय इनपुट/आउटपुट क्षमताओं का एक विस्तृत सेट प्रदान करते हैं जिसे हम बाद के अध्यायों में देखेंगे। यह अध्याय C++ प्रोग्रामिंग के लिए आवश्यक बहुत ही बुनियादी और सबसे सामान्य I/O संचालन पर चर्चा करेगा। C++ I/O स्ट्रीम में होता है, जो बाइट्स के सीक्वेंस होते हैं। यदि बाइट किसी डिवाइस जैसे

  1. सी ++ में शुद्ध कार्य

    शुद्ध फ़ंक्शन हमेशा समान तर्क मानों के लिए समान परिणाम लौटाते हैं। वे केवल परिणाम लौटाते हैं और तर्क संशोधन, I/O स्ट्रीम, आउटपुट पीढ़ी आदि जैसे कोई अतिरिक्त दुष्प्रभाव नहीं होते हैं। कुछ शुद्ध कार्य हैं sin(), strlen(), sqrt(), max(), pow(), floor() आदि। कुछ अशुद्ध कार्य रैंड (), समय() आदि हैं। कु