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

C++ में सभी बैनरों को टांगने के लिए आवश्यक पिनों की न्यूनतम संख्या ज्ञात करने का कार्यक्रम

मान लीजिए कि हमारे पास फॉर्म के अंतराल की एक सूची है [प्रारंभ, अंत] यह उन बैनरों के प्रारंभ और अंत बिंदुओं का प्रतिनिधित्व कर रहा है जिन्हें हम लटकाना चाहते हैं। एक बैनर को टांगने के लिए कम से कम एक पिन की आवश्यकता होती है, और एक पिन एक से अधिक बार बैनर लटका सकता है। हमें सभी बैनरों को टांगने के लिए आवश्यक पिनों की न्यूनतम संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट अंतराल की तरह है =[[2, 5], [5, 6], [8, 10], [10, 13]], तो आउटपुट 2 होगा, क्योंकि हम दो पिनों को स्थिति में रख सकते हैं। 5 और 10 सभी बैनर टांगने के लिए।

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

  • अंतराल के अंतिम मूल्यों के आधार पर सरणी v को क्रमबद्ध करें
  • रिट:=0
  • अंतिम:=-इन्फ़
  • प्रत्येक आइटम के लिए यह v −
      . में है
    • यदि अंतिम>=इसकी शुरुआत है, तो −
      • निम्न भाग पर ध्यान न दें, अगले भाग पर जाएं
    • (रिटर्न 1 से बढ़ाएं)
    • अंतिम:=इसका अंत
  • रिटर्न रिटर्न

उदाहरण (C++)

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   static bool cmp(vector<int>& a, vector<int>& b) {
      return a.back() < b.back();
   }
   int solve(vector<vector<int>>& v) {
      sort(v.begin(), v.end(), cmp);
      int ret = 0;
      int last = -1e8;
      for (auto& it : v) {
         if (last >= it[0]) {
            continue;
         }
         ret++;
         last = it[1];
      }
      return ret;
   }
};
int solve(vector<vector<int>>& intervals) {
   return (new Solution())->solve(intervals);
}
int main(){
   vector<vector<int>> v = {{2, 5},{5, 6},{8, 10},{10, 13}};
   cout << solve(v);
}

इनपुट

{{2, 5},{5, 6},{8, 10},{10, 13}}

आउटपुट

2

  1. सी ++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास [u, v] के रूप में पेड़ के किनारों की एक सूची है, यह इंगित करता है कि u और v के बीच एक अप्रत्यक्ष किनारा है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले दौर में, हम आगे बढ़ते हैं, फिर अगले दौर में प्रतिद्वंद्वी चलता है और इसी

  1. C++ प्रोग्राम ग्राफ़ को डिस्कनेक्ट करने के लिए काटने के लिए किनारों की न्यूनतम संख्या खोजने के लिए

    इस कार्यक्रम में हमें एक ग्राफ की एज कनेक्टिविटी को खोजने की जरूरत है। ग्राफ़ के ग्राफ़ की एक एज कनेक्टिविटी का अर्थ है कि यह एक पुल है, इसे हटाने से ग्राफ़ डिस्कनेक्ट हो जाएगा। डिस्कनेक्ट किए गए अप्रत्यक्ष ग्राफ़ में पुल को हटाने के साथ जुड़े घटकों की संख्या बढ़ जाती है। कार्य और छद्म कोड Begin &nb

  1. C++ प्रोग्राम ग्राफ़ में आर्टिक्यूलेशन पॉइंट्स की संख्या ज्ञात करने के लिए

    ग्राफ़ में आर्टिक्यूलेशन पॉइंट (या कट वर्टिस) एक बिंदु है यदि इसे हटा दिया जाता है (और इसके माध्यम से किनारों) ग्राफ़ को डिस्कनेक्ट करता है। डिस्कनेक्ट किए गए अप्रत्यक्ष ग्राफ़ के लिए एक अभिव्यक्ति बिंदु, एक शीर्ष हटाने वाला है जो कनेक्टेड घटकों की संख्या को बढ़ाता है। एल्गोरिदम Begin    W