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

सी ++ में अलग-अलग मानों के साथ लगातार तत्व वाले सरणी की संख्या

इनपुट के रूप में तीन चर आकार, max_val, last_element को देखते हुए। लक्ष्य विभिन्न सरणियों की गिनती का पता लगाना है जो इस तरह से बनाई जा सकती हैं कि उनके आकार के तत्व हों, 1 और max_val के बीच के तत्व हों और पहला तत्व हमेशा 1 होता है और अंतिम तत्व हमेशा max_val होता है। यह भी सुनिश्चित करें कि कोई भी लगातार दो तत्व समान न हों।

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

उदाहरण के लिए

इनपुट - आकार =5, अधिकतम_वल =3, last_element =3

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

स्पष्टीकरण - सरणियाँ होंगी:-

[ 1, 2, 3, 1, 3], [1, 2, 3, 2, 3], [1, 2, 1, 2, 3], [1, 3, 1, 2, 3], [ 1 , 3, 2, 1, 3]।

इनपुट - आकार =3 अधिकतम_वल =2 अंतिम_तत्व =2

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

स्पष्टीकरण - 3 तत्वों के साथ कोई सरणी संभव नहीं है और [ 1, _, 2 ] लगातार तत्वों के रूप में हम मध्य तत्व के लिए 1 या 2 को छोड़कर कुछ भी नहीं भर सकते हैं और यह लगातार विभिन्न तत्वों की स्थिति का उल्लंघन करेगा।

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

  • इस दृष्टिकोण में हम इस तरह के सरणियों की गिनती खोजने के लिए गतिशील प्रोग्रामिंग और कॉम्बिनेटरिक्स का उपयोग करेंगे।
  • पहला और आखिरी तत्व 1 और last_element के रूप में तय किया जाएगा। सरणी के किसी भी आकार के लिए इसे भरने के तरीके केवल आकार-2 तत्वों के लिए होंगे।
  • आकार-2 स्थानों में भरने के लिए [1 to max_val] तत्वों को भरने के लिए। तरीके होंगे तरीके (max_val)=तरीके (आकार) / (max_val - 1)
  • प्रत्येक श्रेणी 1 से i के लिए, तरीके होंगे तरीके (i) =तरीके (आकार) / (max_val - 1) [तरीके (आकार) =अंतिम तत्व को संख्या 2 से max_val तक भरने के तरीकों की संख्या)।
  • यदि last_element 1 है तो तरीके होंगे तरीके(size-1) क्योंकि अंतिम तत्व केवल 1 हो सकता है।
  • दूसरा अंतिम तत्व हमेशा 1 और max_val के बीच हो सकता है।
  • यदि दूसरा अंतिम तत्व 1 नहीं है तो तरीके होंगे (max_val-2)*ways(i-1) क्योंकि arri 1 या arri-1
  • यदि दूसरा अंतिम तत्व 1 है तो तरीके होंगे (max_val-1)*ways(i-1) as arri-1 1 है और गिरफ्तारi-2 1 नहीं है।
  • तरीके(i) होंगे :- (max_val - 2)*ways(i-2) + (max_val-2)*ways(i-1)
  • वेरिएबल आकार, max_val और last_element को इनपुट के रूप में लें।
  • फ़ंक्शन diff_val(int size, int max_val, int last_element) सभी इनपुट लेता है और अलग-अलग मानों वाले लगातार तत्वों वाले सरणी की गिनती देता है।
  • प्रारंभिक गणना 0 के रूप में लें।
  • सरणी गिरफ्तार करें [Max_N] ={ 0 } सरणियों को भरने के तरीकों की गिनती करें। arr[0] को 0 से और arr[1] को 1 से प्रारंभ करें।
  • i=2 से i<आकार तक जाएं।
  • temp_1 =(max_val - 2) * arr[i - 1] और temp_2 =(max_val - 1) * arr[i - 2]
  • लें
  • गिरफ्तारी सेट करें[i] =temp_1 + temp_2.
  • यदि last_element ==1 तो गिनती =(max_val - 1) * arr[size - 2] सेट करें।
  • अन्यथा वापसी वापसी [आकार - 1]।
  • अंत में परिणाम के रूप में वापसी की गणना करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define Max_N 109

int diff_val(int size, int max_val, int last_element) {
   int count = 0;
   int arr[Max_N] = {
      0
   };
   arr[0] = 0;
   arr[1] = 1;
   for (int i = 2; i < size; i++) {
      int temp_1 = (max_val - 2) * arr[i - 1];
      int temp_2 = (max_val - 1) * arr[i - 2];
      arr[i] = temp_1 + temp_2;
   }
   if (last_element == 1) {
      count = (max_val - 1) * arr[size - 2];
   } else {
      return arr[size - 1];
   }
   return count;
}
int main() {
   int size = 5;
   int max_val = 3;
   int last_element = 3;
   cout << "Count of arrays having consecutive element with different values are: " << diff_val(size, max_val, last_element);
   return 0;
}

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

आउटपुट

Count of arrays having consecutive element with different values are: 5

  1. C++ में अंकों के समान योग वाले दो सरणियों से अलग-अलग युग्मों की गणना करें

    हमें दो सरणियों के साथ दिया गया है, मान लीजिए, arr_1[] और arr_2[] पूर्णांक मान रखते हैं और कार्य समान अंकों के योग वाले अलग-अलग जोड़े की गणना करना है। इसका अर्थ है, एक मान को arr_1[] से चुना जाना चाहिए और दूसरा मान arr_2[] से एक जोड़ी बनाने के लिए चुना जाना चाहिए और दोनों मानों का योग अंक समान होना

  1. C++ में अद्वितीय अंकों के साथ संख्याएं गिनें

    मान लीजिए कि हमारे पास एक गैर-ऋणात्मक पूर्णांक n है। हमें सभी संख्याओं को अद्वितीय अंकों x के साथ गिनना है, जहां x 0 से 10^n की सीमा में है। इसलिए यदि संख्या n 2 है, तो परिणाम 91 होगा, क्योंकि हम 11, 22, 33, 44, 55, 66, 77, 88, 99 के बिना 0 से 100 तक की संख्याएँ खोजना चाहते हैं। इसे हल करने के लिए,

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

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