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

लगातार तत्वों के साथ उप-सरणी की गणना करें जो C++ में 1 से भिन्न हों

हमें एक सरणी दी गई है arr[] जिसमें पूर्णांक हैं। लक्ष्य गिरफ्तारी [] के सभी उप-सरणी को गिनना है, जैसे कि प्रत्येक उप-सरणी में लगातार तत्व केवल 1 से भिन्न होते हैं। अगर सरणी [1,2,3] है। सबअरे [1,2], [2,3], [1,2,3] ही होंगे।

आइए उदाहरणों से समझते हैं।

इनपुट - गिरफ्तारी [] ={ 4,3,2,1 };

आउटपुट − लगातार तत्वों के साथ उपसरणियों की संख्या 1 से भिन्न होती है − 6

स्पष्टीकरण - सुबारे होंगे -

[4,3], [3,2], [2,1], [4,3,2], [3,2,1], [4,3,2,1]. Total 6.

इनपुट - एआर [] ={ 1,5,6,7,9,11 };

आउटपुट - लगातार तत्वों के साथ उपसरणियों की संख्या 1 से भिन्न होती है - 3

स्पष्टीकरण - सुबारे होंगे -

[5,6], [6,7], [5,6,7]. Total 3

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

हम लूप के लिए a का उपयोग करके सरणी को पार करेंगे। i=0 से i<आकार तक। फिर जांचें कि क्या कोई तत्व अपने आसन्न तत्व से 1 से भिन्न है। यदि हां पहले के रूप में स्टोर इंडेक्स। यदि नहीं, तो उप-सरणी में तत्वों की संख्या को एक अस्थायी (प्रथम-अंतिम +1) के रूप में लें। पहले और अंतिम अनुक्रमित के बीच के सरणी में सभी लगातार तत्व 1 से भिन्न होते हैं। इसलिए कुल उप-सरणी अस्थायी * (अस्थायी -1)/2 होगी। इसे गिनने के लिए जोड़ें। लगातार सभी तत्वों के साथ अगली सरणी के लिए अनुक्रमणिका पहले =अंतिम =i अपडेट करें।

  • संख्याओं की एक सरणी गिरफ्तारी [] लें।

  • फ़ंक्शन sub_ele_diff_one(int arr[], int size) सरणी लेता है और लगातार तत्वों के साथ उपसरणियों की गिनती देता है जो 1 से भिन्न होते हैं।

  • प्रारंभिक गणना 0 के रूप में लें।

  • हम लूप के लिए i =0 से I <आकार तक का उपयोग करके सरणी को पार करेंगे।

  • पहले दो वैरिएबल लें, इंडेक्स के लिए 0 के रूप में अंतिम, जिसमें सभी तत्व लगातार हैं और 1 से भिन्न हैं।

  • जांचें कि क्या गिरफ्तारी [i-1] -arr [i] ==1 या गिरफ्तारी [i] -arr [i-1] ==1 है। (तत्व 1 से भिन्न होते हैं)। अगर सही है, तो पहले इंक्रीमेंट करें।

  • यदि पिछली स्थिति गलत है, तो इस शर्त को पूरा करने वाले सरणी में कुल तत्व अस्थायी =प्रथम-अंतिम + 1 है। सबएरे संभव है कुल =अस्थायी * (अस्थायी -1) / 2।

  • अब गिनने के लिए इस सबअरे काउंट टोटल को जोड़ें।

  • वर्तमान I के साथ पहले और अंतिम अनुक्रमणिका अपडेट करें (अनुक्रमणिका जिस पर लगातार तत्व स्थिति विफल हो जाती है।

  • लूप के अंत में अगर पहले!=अंतिम। इसका मतलब है कि शेष सरणी शर्त को पूरा करती है। समान चरणों को लागू करें और गिनने के लिए कुल जोड़ें।

  • दोनों लूपों के अंत में, परिणाम के रूप में वापसी की गणना करें।

उदाहरण

#include <iostream>
using namespace std;
int sub_ele_diff_one(int arr[], int size){
   int count = 0, first = 0, last = 0;
   for (int i = 1; i < size; i++){
      if (arr[i] - arr[i - 1] == 1 || arr[i-1] - arr[i] == 1){
         first++;
      }
      else{
         int temp = first - last + 1;
         int total = temp * (temp - 1) / 2;
         count = count + total;
         first = i;
         last = i;
      }
   }
   if (first != last){
      int temp = first - last + 1;
      int total = temp * (temp - 1) / 2;
      count = count + total;
   }
   return count;
}
int main(){
   int arr[] = { 1, 2, 4, 3 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Count of Subarrays with Consecutive elements differing by 1 are: "<<sub_ele_diff_one(arr, size);
   return 0;
}

आउटपुट

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

Count of Subarrays with Consecutive elements differing by 1 are: 2

  1. C++ में नाइस सबएरे की संख्या गिनें

    मान लीजिए कि हमारे पास पूर्णांक संख्याओं की एक सरणी है और एक पूर्णांक k है। एक सबअरे को अच्छा सबअरे के रूप में जाना जाता है यदि उस पर k विषम संख्याएँ हों। हमें अच्छे उप-सरणियों की संख्या ज्ञात करनी है। तो यदि सरणी [1,1,2,1,1] है, और k =3 है, तो आउटपुट 2 होगा, क्योंकि उप-सरणी [1,1,2,1] और [1,2,1] हैं

  1. C++ में b से अधिक वाले उपसर्ग

    इस समस्या में, हमें स्ट्रिंग str दिया जाता है जिसमें केवल a और b होता है और एक पूर्णांक N होता है जैसे कि str n बार जोड़कर एक स्ट्रिंग बनाई जाती है। हमारा काम सबस्ट्रिंग की कुल संख्या को प्रिंट करना है जिसमें a की गिनती b की गिनती से अधिक है। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं Input: aab

  1. सी ++ में प्रमुख आवृत्तियों वाले ऐरे तत्व?

    सरणी समान डेटा प्रकार के तत्वों का एक कंटेनर है। प्राइम फ़्रीक्वेंसी इसका मतलब है कि सरणी के तत्व की घटना की संख्या एक प्रमुख संख्या है। तो, इन परिभाषाओं के आधार पर अभाज्य आवृत्तियों वाले सरणी तत्वों को खोजने में समस्या। हमें सरणी की एक स्ट्रिंग दी गई है। हमें वर्णों की आवृत्ति का पता लगाना होगा