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

C++ प्रोग्राम: सूची के बाएं या दाएं छोर से हल की जा सकने वाली समस्याओं की संख्या गिनें


मान लीजिए हमारे पास n तत्वों वाला एक सरणी A और एक अन्य संख्या k है। मान लें कि एक प्रतियोगिता में n समस्याएं हैं। अमल की समस्या सुलझाने की क्षमता k है। अमल हमेशा सूची के किसी भी छोर से समस्या हल करता है। और वह उस समस्या को हल नहीं कर सकता जिसकी कठिनाई k से अधिक है। वह तब रुकता है जब बाएं और दाएं समस्याओं की कठिनाई k से अधिक होती है। हमें गिनना है कि वह कितनी समस्याएं हल कर सकता है। A[i] i-वें समस्या की कठिनाई को दर्शाता है।

उदाहरण के लिए, यदि इनपुट A = [4, 2, 3, 1, 5, 1, 6, 4]; k = 4 है, तो आउटपुट 5 होगा, क्योंकि प्रारंभ में बाएं से 4 कठिनाई वाली समस्या हल करता है, फिर दाएं से 4 कठिनाई वाली समस्या, फिर दाएं से और नहीं हल कर सकता, फिर बाएं से, 2, 3 और 1 कठिनाई वाली समस्याएं हल करता है। कुल 5 समस्याएं हल की जा सकती हैं।

चरण

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

n := size of A l := 0 r := n - 1 for initialize i := 0, when i < n, update (increase i by 1), do:    if A[i] <= k and l is same as i, then:       (increase l by 1) while A[r] <= k, do:    (decrease r by 1) if l is same as n, then:    return n Otherwise    return n - 1 - r + l

उदाहरण

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

#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int k) {    int n = A.size();    int l = 0, r = n - 1;    for (int i = 0; i < n; ++i) {       if (A[i] <= k && l == i)          ++l;    }    while (A[r] <= k)       --r;    if (l == n)       return n;    else       return n - 1 - r + l; } int main() {    vector<int> A = { 4, 2, 3, 1, 5, 1, 6, 4 };    int k = 4;    cout << solve(A, k) << endl; }

इनपुट

{ 4, 2, 3, 1, 5, 1, 6, 4 }, 4

आउटपुट

5

  1. - C++ प्रोग्राम: सीढ़ियों की संख्या और प्रत्येक सीढ़ी में चरणों की संख्या गिनें

    मान लीजिए हमारे पास n तत्वों वाला एक सरणी A है। मान लें, अमल एक बहुमंजिला इमारत के अंदर सीढ़ियां चढ़ता है। हर बार जब वह चढ़ता है, तो 1 से गिनती शुरू करता है। उदाहरण के लिए, यदि वह 3 चरणों और 4 चरणों वाली दो सीढ़ियां चढ़ता है, तो वह 1, 2, 3, 1, 2, 3, 4 जैसे संख्या बोलेगा। सरणी A में, संख्याएं अमल द्

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

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

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

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