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

सी ++ में सापेक्ष रैंक

मान लीजिए कि हमारे पास एन एथलीटों के स्कोर की एक सूची है, हमें उनके सापेक्ष रैंक और शीर्ष तीन उच्चतम स्कोर वाले लोगों को ढूंढना है, जो अलग-अलग पदक होंगे:"गोल्ड", "सिल्वर" और "कांस्य"।

इसलिए, यदि इनपुट [2,5,3,1,0] जैसा है, तो आउटपुट [कांस्य, सोना, चांदी, 4,5]

होगा।

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

  • यदि अंकों का आकार 1 के समान है, तो -

    • रिटर्न "गोल्ड"

  • यदि अंकों का आकार 2 के समान है, तो -

    • यदि अंक [0]> अंक [1], तो -

      • वापसी "गोल्ड", "सिल्वर"

    • अन्यथा

      • वापसी "सिल्वर", "गोल्ड"

  • सरणी को परिभाषित करें v

  • D एक सरणी vec परिभाषित करें

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

    • v के अंत में nums[i] डालें

  • सरणी को क्रमबद्ध करें v

  • सरणी v को उलट दें

  • एक नक्शा एमपी परिभाषित करें

  • यदि अंकों का आकार> 2, तो -

    • एमपी में {v[0], "गोल्ड" } डालें

    • एमपी में {v[1], "सिल्वर" } डालें

    • एमपी में {v[2], "कांस्य" } डालें

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

      • एमपी में {v[i], i + 1 as string} डालें

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

      • vec के अंत में mp[nums[i]] डालें

  • वापसी vec

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<string> findRelativeRanks(vector<int>& nums){
      if (nums.size() == 1){
         return { "Gold" };
      }
      if (nums.size() == 2){
         if (nums[0] > nums[1])
            return { "Gold", "Silver" };
         else
            return { "Silver", "Gold" };
      }
      vector<int> v;
      vector<string> vec;
      for (int i = 0; i < nums.size(); i++)
         v.push_back(nums[i]);
      sort(v.begin(), v.end());
      reverse(v.begin(), v.end());
      map<int, string> mp;
      if (nums.size() > 2) {
         mp.insert({v[0], "Gold" });
         mp.insert({v[1], "Silver" });
         mp.insert({v[2], "Bronze" });
         for (int i = 3; i < v.size(); i++) {
            mp.insert({ v[i], to_string(i + 1) });
         }
         for (int i = 0; i < nums.size(); i++)
            vec.push_back(mp[nums[i]]);
      }
      return vec;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,5,3,1,0};
   print_vector(ob.findRelativeRanks(v));
}

इनपुट

{2,5,3,1,0}

आउटपुट

[Bronze, Gold, Silver, 4, 5, ]

  1. स्विच स्टेटमेंट C++

    C++ में स्विच स्टेटमेंट का उपयोग कैसे करें सशर्त बयान सभी प्रोग्रामिंग भाषाओं की एक सामान्य विशेषता है। इन कथनों का उपयोग किसी प्रोग्राम के प्रवाह को नियंत्रित करने और यह निर्दिष्ट करने के लिए किया जाता है कि कोड के विशिष्ट ब्लॉक कब निष्पादित किए जाने चाहिए। C++ में उपयोग किए जाने वाले मुख्य कंडीश

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की