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

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

मान लीजिए कि हमारे पास (xi, yi) रूप में N निर्देशांक P की एक सूची है। 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 है। विचार करें कि अनंत संख्या में वर्गाकार टाइलें हैं और भुजाओं की लंबाई के साथ नियमित त्रिकोणीय टाइलें हैं। हमें यह पता लगाना है कि इन टाइलों का उपयोग करके हम कितने तरीकों से नियमित डोडेकागन (12-पक्षीय बहुभुज) बना सकते हैं। यदि उत्तर बहुत बड़ा है, तो परिणाम मोड 99

  1. सी ++ में बाइनरी मैट्रिक्स को शून्य मैट्रिक्स में बदलने के लिए संचालन की संख्या की गणना करने का कार्यक्रम

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

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

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