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

दिए गए ऑपरेशन के साथ प्रत्येक शहर से विज़िट किए जा सकने वाले शहरों की संख्या गिनने के लिए C++ प्रोग्राम


मान लीजिए हमारे पास N कोऑर्डिनेट पॉइंट्स P की एक लिस्ट है जो (xi, yi) के रूप में है। x और y मान पहले N नेचुरल नंबर्स के क्रमचय हैं। 1 से N की रेंज में प्रत्येक k के लिए। हम शहर k पर हैं। हम ऑपरेशन को मनमाने ढंग से कई बार लागू कर सकते हैं। ऑपरेशन: हम दूसरे शहर में जाते हैं जिसका x-कोऑर्डिनेट छोटा है और y-कोऑर्डिनेट छोटा है या वर्तमान शहर से बड़ा x या बड़ा y कोऑर्डिनेट है। हमें शहर k से पहुंच योग्य शहरों की संख्या ढूंढनी है।

इसलिए, यदि इनपुट इस तरह है: P = [[1, 4], [2, 3], [3, 1], [4, 2]], तो आउटपुट होगा [1, 1, 2, 2]

चरण

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

n := size of P Define one 2D array lst for initialize i := 0, when i < n, update (increase i by 1), do:    v := { P[i, 0], P[i, 1], i }    insert v at the end of lst sort the array lst y_min := 1e9 Define one set se Define an array ans of size n and fill with 0 for initialize i := 0, when i < n, update (increase i by 1), do:    y_min := minimum of y_min and lst[i, 1]    insert lst[i, 2] into se    if y_min + i is same as n, then:       for each element j in se          ans[j] := size of se       clear the set se    if i is same as n - 1, then:       for each element j in se          ans[j] := size of se for initialize i := 0, when i < n, update (increase i by 1), do:    display ans[i]

उदाहरण

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

#include <bits/stdc++.h> using namespace std; void solve(vector<vector<int>> P){    int n = P.size();    vector<vector<int>> lst;    for (int i = 0; i < n; i++){       vector<int> v = { P[i][0], P[i][1], i };       lst.push_back(v);    }    sort(lst.begin(), lst.end());    int y_min = 1e9;    set<int> se;    vector<int> ans(n, 0);    for (int i = 0; i < n; i++){       y_min = min(y_min, lst[i][1]);       se.insert(lst[i][2]);       if (y_min + i == n){          for (auto j : se)             ans[j] = se.size();          se.clear();       }       if (i == n - 1){          for (auto j : se)             ans[j] = se.size();       }    }    for (int i = 0; i < n; i++){       cout << ans[i] << ", ";    } } int main(){    vector<vector<int>> P = { { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } };    solve(P); }

इनपुट

{ { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } }

आउटपुट

1, 1, 2, 2,

  1. आकार d के डोडेकागन बनाने के तरीकों की संख्या गिनने के लिए C++ प्रोग्राम आकार d के डोडेकागन बनाने के तरीकों की संख्या गिनने के लिए C++ प्रोग्राम

    मान लीजिए हमारे पास एक संख्या d है। मान लें कि भुजा लंबाई 1 के अनंत वर्गाकार टाइल्स और नियमित त्रिकोणीय टाइल्स हैं। हमें उन तरीकों की संख्या ढूंढनी है जिनसे हम इन टाइल्स का उपयोग करके भुजा d के साथ नियमित डोडेकागन (12-भुज बहुभुज) बना सकते हैं। यदि उत्तर बहुत बड़ा है, तो परिणाम को 998244353 मॉड्यूलो

  1. C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम C++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए ऑपरेशनों की गिनती करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। अब एक ऑपरेशन पर विचार करें जहां हम एक सेल लेते हैं और उसे और उसके सभी पड़ोसी सेल्स (ऊपर, नीचे, बाएं, दाएं) को फ्लिप करते हैं। हमें ऑपरेशनों की न्यूनतम संख्या ढूंढनी है जैसे कि मैट्रिक्स में केवल 0 हों। यदि कोई समाधान नहीं है, तो -1 वापस करें। तो, यदि इनप

  1. - C++ में दिए गए अनुपात से प्रत्येक प्रकार के सिक्कों की संख्या ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें चार संख्याएं दी गई हैं जो कुल कीमत (totalPrice) और थैले में 1 रुपये, 50 पैसे, 25 पैसे के सिक्कों के अनुपात को परिभाषित करती हैं। हमारा कार्य C++ में दिए गए अनुपात से प्रत्येक प्रकार के सिक्कों की संख्या ज्ञात करने का प्रोग्राम बनाना है।कोड विवरण - यहां, हमें दी गई कुल राशि प्राप्