सकारात्मक संख्याओं की एक सरणी को देखते हुए। प्रत्येक तत्व अधिकतम संख्या में छलांग का प्रतिनिधित्व करता है जो उस सूचकांक से सरणी के अंत तक पहुंचने के लिए किया जा सकता है। लक्ष्य यह है कि उस तत्व से अंत तक पहुंचने के लिए कितनी छलांग लगाई जा सकती है। अगर arr[] है [ 1,2,3 ] तो 1 जंप के लिए 1 हो सकता है, 2 जंप के लिए 1 या 2 हो सकता है और 3 जंप के लिए 1, 2 या 3 किया जा सकता है।
उदाहरण के लिए
इनपुट
arr[] = {1,2,3}
आउटपुट
Count of number of ways to jump to reach end are: 1 1 0
स्पष्टीकरण
For 1 we have jumps : 1, For 2 we have jumps 1 or 2, to reach the end we need just one jump of 1. For 3 we have jumps 1,2 or 3, as at its end we need no jumps.
इनपुट
arr[] = {4,3,6,2}
आउटपुट
Count of number of ways to jump to reach end are: 4 2 1 0
स्पष्टीकरण
For 4 we have jumps : 1, 2, 3 or 4. To reach the end we need only 1,2 or 3. Ways will be 4−3−6−2, 4−6−2, 4−2, 4−3−2. Total 4. For 3 we have jumps 1, 2 or 3 to reach the end we need both. Ways will be 3−6−2, 3−2. Total 2. For 6 we have jumps 1 to 5, to reach the end we need 1. Ways will be 6−2. Total 1. For 2 we have jumps 1or 2, as at its end we need no jumps.
नीचे दिए गए कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -
प्रत्येक तत्व गिरफ्तारी [i] के लिए इस दृष्टिकोण में हम उन सभी तत्वों के लिए सरणी के अंत तक पहुंचने के तरीकों की संख्या जोड़ देंगे जो आगे गिरफ्तारी [i] हैं और वर्तमान तत्व से पहुंच योग्य हैं। गिरफ्तारी के तरीकों के लिए इस गिनती में 1 जोड़ें [i] अगर हम सीधे एक ही छलांग में एआर [i] से अंत तक पहुंच सकते हैं।
-
एक पूर्णांक सरणी arr[] लें।
-
फ़ंक्शन पहुंच_एंड (इंट एआर [], इंट साइज) एक सरणी लेता है और अंत तक पहुंचने के लिए कूदने के तरीकों की संख्या देता है।
-
गिरफ्तारी के प्रत्येक तत्व से अंत तक पहुंचने के तरीकों को संग्रहीत करने के लिए arr_2[] सरणी लें []।
-
memset(arr_2, 0, sizeof(arr_2)) का उपयोग करके पूरे arr_2[] को 0 से प्रारंभ करें।
-
i=size-2 से i=0 तक लूप के लिए ट्रैवर्स arr[] का उपयोग करना, क्योंकि अंतिम तत्व पर विचार नहीं किया जाएगा।
-
अस्थायी =आकार - i - 1 लें। यदि temp> =arr[i] तो हम सीधे एक छलांग का उपयोग करके अंत तक पहुंच सकते हैं। arr_2[i]++ का उपयोग करके arr[i] के लिए वृद्धि के तरीके गिने जाते हैं।
-
अब अन्य सभी तत्वों के लिए जो अंत तक पहुँच सकते हैं और जिन तक हम arr[i] से पहुँच सकते हैं, arr_2[i] के तरीकों की संख्या जोड़ें।
-
उपरोक्त ट्रैवर्स के लिए j=i+1 से j
-
यदि अभी भी arr_2[i] 0 है तो इसे -1 पर सेट करें, जिसका अर्थ है कि यह अंत तक नहीं पहुंच सकता।
-
सभी लूपों के अंत में हमारे पास arr_2[] होगा जिसमें arr[] के प्रत्येक तत्व के अंत तक पहुंचने के तरीके होंगे।
-
परिणाम के रूप में लूप के लिए उपयोग करके arr_2 प्रिंट करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; void reach_end(int arr[], int size){ int arr_2[size]; memset(arr_2, 0, sizeof(arr_2)); for (int i = size−2; i >= 0; i−−){ int temp = size − i − 1; if (arr[i] >= temp){ arr_2[i]++; } for (int j = i+1; j < size−1 && j <= arr[i] + i; j++){ if (arr_2[j] != −1){ arr_2[i] = arr_2[i] + arr_2[j]; } } if(arr_2[i] == 0){ arr_2[i] = −1; } } cout<<"Count of number of ways to jump to reach end are: "; for (int i=0; i < size; i++){ cout<<arr_2[i] << " "; } } int main(){ int arr[] = {2, 3, 7, 1, 8, 9}; int size = sizeof(arr) / sizeof(arr[0]); reach_end(arr, size); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of number of ways to jump to reach end are: 8 5 3 1 1 0