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

C++ में गैर-बढ़ते सबएरे की संख्या गिनना


धनात्मक पूर्णांकों वाली एक सरणी arr[] दी गई है। लक्ष्य कम से कम लंबाई 1 वाले उन सबएरे की संख्या ढूंढना है जो गैर-बढ़ते हैं। यदि arr[] = {1,3,2}, तो सबएरे होंगे {1}, {2}, {3}, {3,2}। गिनती 4 है।

उदाहरण के लिए

इनपुट

arr[] = {5,4,5}

आउटपुट

Count of number of non-increasing subarrays are: 7

व्याख्या

सबएरे होंगे - {5}, {4}, {5}, {5,4}

इनपुट

arr[] = {10,9,8,7}

आउटपुट

Count of number of non-increasing subarrays are - 10

व्याख्या

सबएरे होंगे - {10}, {9}, {8}, {7}, {10,9}, {9,8}, {8,7}, {10,9,8}, {9,8,7}, {10,9,8,7}

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण इस प्रकार है:

इस दृष्टिकोण में, हम इस तथ्य का उपयोग करेंगे कि यदि इंडेक्स i और j के बीच arr[] में एलिमेंट्स गैर-बढ़ते नहीं हैं तो इंडेक्स i से j+1, i से j+2... i से j+n-1 के बीच एलिमेंट्स कभी भी गैर-बढ़ते नहीं हो सकते इसलिए इस सबएरे की लंबाई को तब तक बढ़ाते रहें जब तक एलिमेंट्स गैर-बढ़ते हैं। यदि कोई छोटा एलिमेंट मिलता है arr[j] < arr[j-1] तो len*(len+1)/2 (वर्तमान गैर-बढ़ते सबएरे के सबएरे जिनमें len एलिमेंट्स हैं) को ऐसी सबएरे की गिनती में जोड़ें और सबएरे की लंबाई को 1 पर रीसेट करें।

  • एक पूर्णांक सरणी arr[] लें।

  • फ़ंक्शन subarrays(int arr[], int size) सरणी और उसका आकार लेता है और गैर-बढ़ते सबएरे की संख्या की गिनती लौटाता है।

  • प्रारंभिक गिनती को 0 और सबसे छोटे सबएरे की लंबाई को temp=1 के रूप में लें।

  • फॉर लूप का उपयोग करके arr[] को ट्रैवर्स करें, यदि arr[i + 1] <= arr[i] तो temp बढ़ाएं क्योंकि सबएरे गैर-बढ़ता है।

  • अन्यथा ((temp + 1) * temp) / 2 को लंबाई temp के सबएरे के सबएरे की संख्या के लिए गिनती में जोड़ें जो गैर-बढ़ता है।

  • नए सबएरे के लिए temp=1 सेट करें।

  • सभी लूप के अंत में, यदि लंबाई temp>1 फिर से ((temp + 1) * temp) / 2 को अंतिम सबएरे के लिए गिनती में जोड़ें।

  • परिणाम के रूप में गिनती लौटाएं।

उदाहरण

#include <bits/stdc++.h> using namespace std; int subarrays(int arr[], int size){ int count = 0; int temp = 1; for(int i = 0; i < size - 1; ++i){ if (arr[i + 1] <= arr[i]){ temp++; } else { count += (((temp + 1) * temp) / 2); temp = 1; } } if(temp > 1){ count += (((temp + 1) * temp) / 2); } return count; } int main(){ int arr[] = {2, 6, 1, 8, 3}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of number of non-increasing subarrays are: "<<subarrays(arr, size); return 0; }

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:

Count the number of non-increasing subarrays are: 7

  1. OpenCV में C++ का उपयोग करके कुल फ्रेम की संख्या गिनें OpenCV में C++ का उपयोग करके कुल फ्रेम की संख्या गिनें

    हम सीखेंगे कि OpenCV में कुल फ्रेम की संख्या कैसे गिनें। OpenCV का उपयोग करके, वीडियो के कुल फ्रेम की संख्या को गिनना और दिखाना प्राथमिक है। हालांकि, आपको एक बात ध्यान में रखनी होगी कि हम वास्तविक समय वीडियो के कुल फ्रेम की संख्या नहीं गिन सकते। क्योंकि वास्तविक समय वीडियो में फ्रेम की एक विशिष्ट सं

  1. C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है C++ में उन नोड्स को गिनना जिनका योग X के साथ फाइबोनैचि संख्या है

    नोड्स के वजन वाली एक बाइनरी ट्री दी गई है। लक्ष्य उन नोड्स की संख्या ढूंढना है जिनके वजन ऐसे हैं कि संख्या एक फाइबोनैचि संख्या है। फाइबोनैचि श्रृंखला में संख्याएं हैं: 0, 1, 1, 2, 3, 5, 8, 13... nth संख्या (n-1)th और (n-2)th का योग है। यदि वजन 13 है तो यह एक फाइबोनैचि संख्या है इसलिए नोड गिना जाएगा।

  1. C++ में आयत में वर्गों की संख्या गिनना C++ में आयत में वर्गों की संख्या गिनना

    =B। लक्ष्य LxB आकार के आयत में समायोजित किए जा सकने वाले वर्गों की संख्या ढूंढना है। उपरोक्त आकृति 3x2 आकार के एक आयत को दर्शाती है। इसमें 2, 2x2 वर्ग और 6, 1x1 वर्ग हैं। कुल वर्ग = 6+2=8। LxB आकार के हर आयत में L*B संख्या के 1x1 वर्ग होते हैं। सबसे बड़े वर्ग BxB आकार के होते हैं। L=B=1 के लिए, वर