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

सी ++ में कुंजी के साथ क्रमपरिवर्तन पर प्रश्न

मान लीजिए कि हमारे पास 1 और m के बीच सकारात्मक पूर्णांकों की एक सरणी क्वेरी है, हमें सभी प्रश्नों, प्रश्नों को संसाधित करना है [i] (i =0 से n तक, n प्रश्नों का आकार है -1) निम्नलिखित नियमों के अनुसार -

  • शुरुआत में, हमारे पास क्रमचय P=[1,2,3,...,m] है।

  • वर्तमान i के लिए, क्रमचय P (0 से अनुक्रमण) में प्रश्नों की स्थिति [i] ज्ञात करें और फिर इसे क्रमचय P की शुरुआत में स्थानांतरित करें।

हमें दिए गए प्रश्नों के परिणाम वाली एक सरणी ढूंढनी है।

इसलिए, यदि इनपुट प्रश्नों की तरह है =[3,1,2,1], एम =5, तो आउटपुट [2,1,2,1] होगा, ऐसा इसलिए है क्योंकि प्रश्नों को निम्नानुसार संसाधित किया जाता है -

  • अनुक्रमणिका i =0 के लिए:क्वेरीज़ [i] =3, P =[1,2,3,4,5], P में 3 की स्थिति 2 है, फिर 3 को P की शुरुआत में ले जाएँ जिसके परिणामस्वरूप P=[3, 1,2,4,5].

  • अनुक्रमणिका के लिए i =1:क्वेरीज़[i]=1, P=[3,1,2,4,5], P में 1 की स्थिति 1 है, फिर 1 को P की शुरुआत में ले जाएँ जिसके परिणामस्वरूप P=[1, 3,2,4,5].

  • अनुक्रमणिका i =2 के लिए:क्वेरीज़[i]=2, P=[1,3,2,4,5], P में 2 की स्थिति 2 है, फिर 2 को P की शुरुआत में ले जाएं जिसके परिणामस्वरूप P=[2, 1,3,4,5].

  • अनुक्रमणिका के लिए i =3:क्वेरीज़[i]=1, P=[2,1,3,4,5], P में 1 की स्थिति 1 है, फिर 1 को P की शुरुआत में ले जाएँ जिसके परिणामस्वरूप P=[1, 2,3,4,5].

  • अंत में, परिणाम वाली सरणी [2,1,2,1] है।

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

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

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

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

    • v के अंत में i + 1 डालें

  • q में प्रत्येक मान x के लिए, करें

    • स्थिति :=-1

    • एक सरणी अस्थायी परिभाषित करें

    • इनिशियलाइज़ i:=0 के लिए, जब i

      • अगर v[i] x के समान है, तो -

        • स्थिति :=मैं

        • लूप से बाहर आएं

    • सूचकांक v[pos]

      . पर अस्थायी में अस्थायी का पहला तत्व डालें
    • इनिशियलाइज़ i:=0 के लिए, जब i

      • अगर मैं पॉज़ के समान हूं, तो -

        • निम्नलिखित भाग पर ध्यान न दें, अगले पुनरावृत्ति पर जाएं

      • अस्थायी के अंत में v[i] डालें

    • वी:=अस्थायी

    • रिट के अंत में पोज़ डालें

  • वापसी रिट

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v){
   cout << "[";
   for(int i = 0; i<v.size(); i++){
      cout << v[i] << ", ";
   }
   cout << "]"<<endl;
}
class Solution {
public:
   vector<int> processQueries(vector<int>& q, int m) {
      vector<int> ret;
      vector<int> v;
      for (int i = 0; i < m; i++)
         v.push_back(i + 1);
      for (int x : q) {
         int pos = -1;
         vector<int> temp;
         for (int i = 0; i < v.size(); i++) {
            if (v[i] == x) {
               pos = i;
               break;
            }
         }
         temp.insert(temp.begin(), v[pos]);
         for (int i = 0; i < v.size(); i++) {
            if (i == pos)
               continue;
            temp.push_back(v[i]);
         }
         v = temp;
         ret.push_back(pos);
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,1,2,1};
   print_vector(ob.processQueries(v, 5));
}

इनपुट

{3,1,2,1}, 5

आउटपुट

[2, 1, 2, 1, ]

  1. सी ++ में उदाहरण के साथ अभिव्यक्ति वृक्ष

    एक्सप्रेशन ट्री एक विशेष प्रकार का बाइनरी ट्री होता है जिसमें ट्री के प्रत्येक नोड में या तो एक ऑपरेटर या ऑपरेंड होता है। लीफ नोड्स पेड़ का एक संचालन . का प्रतिनिधित्व करता है . गैर-पत्ती नोड्स पेड़ का एक ऑपरेटर . का प्रतिनिधित्व करता है । उदाहरण: इंफिक्स एक्सप्रेशन प्राप्त करने के लिए जिस

  1. C++ में सरणी में मौजूद कुंजी K की प्रायिकता

    आकार एन की एक सरणी के साथ दिया गया है और कार्य किसी सरणी में उपलब्ध होने पर दिए गए तत्व k की संभावना को खोजना है। संपूर्ण सरणी को n तक पार करें जो किसी सरणी में तत्वों की संख्या के बराबर है और दिए गए तत्व या कुंजी k की खोज करें। यदि तत्व किसी सरणी में मौजूद है तो इसकी संभावना की गणना करें अन्यथा 0

  1. C++ में 3n स्लाइस के साथ पिज़्ज़ा

    मान लीजिए कि एक पिज्जा है जिसमें अलग-अलग आकार के 3n स्लाइस हैं, मैं और मेरे दो दोस्त पिज्जा के स्लाइस इस प्रकार लेंगे - मैं कोई भी पिज़्ज़ा स्लाइस चुनूंगा। मेरा दोस्त अमल मेरी पसंद की घड़ी की विपरीत दिशा में अगला टुकड़ा उठाएगा। मेरा दोस्त बिमल मेरी पसंद की अगली स्लाइस को दक्षिणावर्त दिशा मे