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

C++ में k से कम या उसके बराबर सभी तत्वों को एक साथ लाने के लिए आवश्यक न्यूनतम स्वैप

समस्या कथन

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

उदाहरण

यदि इनपुट ऐरे ={1, 5, 4, 7, 2, 10} और k =6 है तो 1 स्वैप की आवश्यकता है अर्थात 2 के साथ तत्व 7 को स्वैप करें।

एल्गोरिदम

  • उन सभी तत्वों की गणना करें जो 'k' से कम या उसके बराबर हों। मान लें कि गिनती 'cnt' है
  • लंबाई 'cnt' की विंडो के लिए दो पॉइंटर तकनीक का उपयोग करते हुए, हर बार ट्रैक करें कि इस श्रेणी में कितने तत्व 'k' से बड़े हैं। मान लें कि कुल संख्या 'आउटऑफ़रेंज' है।
  • चरण 2 दोहराएं, लंबाई 'cnt' की प्रत्येक विंडो के लिए और उनमें से न्यूनतम 'आउटऑफ़रेंज' गिनें। यह अंतिम उत्तर होगा।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getMinSwaps(int *arr, int n, int k) {
   int cnt = 0;
   for (int i = 0; i < n; ++i) {
      if (arr[i] <= k) {
         ++cnt;
      }
   }
   int outOfRange = 0;
   for (int i = 0; i < cnt; ++i) {
      if (arr[i] > k) {
         ++outOfRange;
      }
   }
   int result = outOfRange;
   for (int i = 0, j = cnt; j < n; ++i, ++j) {
      if (arr[i] > k) {
         --outOfRange;
      }
      if (arr[j] > k) {
         ++outOfRange;
      }
      result = min(result, outOfRange);
   }
   return result;
}
int main() {
   int arr[] = {1, 5, 4, 7, 2, 10};
   int n = sizeof(arr) / sizeof(arr[0]);
   int k = 6;
   cout << "Minimum swaps = " << getMinSwaps(arr, n, k) <<
   endl;
   return 0;
}

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

आउटपुट

Minimum swaps = 1

  1. C++ में मिन हीप में मान x से कम के सभी नोड्स प्रिंट करें

    इस समस्या में, हमें एक मिनी हीप दिया जाता है और एक मान x और हमें x से कम के सभी नोड्स को प्रिंट करना होगा। न्यूनतम ढेर एक विशेष प्रकार का बाइनरी ट्री है जिसमें प्रत्येक नोड का मान उसके चाइल्ड नोड के नोड मान से कम होता है। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं - X =45 आउटपुट - 2 4 7 10

  1. C++ का उपयोग करके सभी तत्वों को समान बनाने के लिए चालों की न्यूनतम संख्या।

    समस्या कथन N तत्वों की एक सरणी और एक पूर्णांक K को देखते हुए, इसे दिए गए सरणी पर किसी भी संख्या में निम्नलिखित ऑपरेशन करने की अनुमति है - Kवें . डालें सरणी के अंत में तत्व और सरणी के पहले तत्व को हटा दें। कार्य सरणी के सभी तत्वों को समान बनाने के लिए आवश्यक न्यूनतम संख्या में चालों को खोजना ह

  1. C++ में n से कम या उसके बराबर सभी भाज्य संख्याएँ ज्ञात कीजिए

    यहां हम देखेंगे कि n से कम या उसके बराबर सभी भाज्य संख्याओं को कैसे मुद्रित किया जाता है, एक संख्या N को भाज्य संख्या कहा जाता है यदि यह एक धनात्मक संख्या का भाज्य है। तो कुछ भाज्य संख्याएं 1, 2, 6, 24, 120 हैं। फैक्टोरियल नंबर प्रिंट करने के लिए, हमें सीधे फैक्टोरियल खोजने की जरूरत नहीं है। I =1 स