इनपुट के रूप में तीन चर आकार, 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