हमें एक लक्ष्य सरणी गिरफ्तारी [] दी गई है जिसमें सकारात्मक पूर्णांक हैं। लक्ष्य सभी 0s के साथ प्रारंभिक सरणी का उपयोग करके लक्ष्य सरणी गिरफ्तारी [] बनाना है। सभी 0 के साथ दिए गए खाली सरणी पर लागू किए जा सकने वाले संचालन में वृद्धि/कमी संचालन प्रत्यय होगा।
यदि हम कोई भी अनुक्रमणिका जैसे i चुनते हैं, तो प्रत्यय वृद्धि संचालन के मामले में हम अनुक्रमणिका i से अंतिम अनुक्रमणिका तक सभी तत्वों में 1 जोड़ देंगे।
प्रत्यय घटती कार्रवाई के मामले में हम सूचकांक i से अंतिम सूचकांक तक सभी तत्वों में से 1 घटा देंगे।
आइए उदाहरणों के साथ समझते हैं
इनपुट - गिरफ्तारी [] ={ 1,2,3 }
आउटपुट − किसी दिए गए एरे को बनाने के लिए प्रत्यय वृद्धि/कमी संचालन की संख्या है − 3
स्पष्टीकरण
Starting from { 0, 0, 0 } Choose index 0, applying suffix increment { 1, 1, 1 } Choose index 1, applying suffix increment { 1, 2, 2 } Choose index 2, applying suffix increment { 1, 2, 3 } Total operations =3
इनपुट - गिरफ्तारी [] ={ 1, 4, 5, 3 }
आउटपुट − किसी दिए गए सरणी के निर्माण के लिए प्रत्यय वेतन वृद्धि/गिरावट संचालन की संख्या है − 7
स्पष्टीकरण
Starting from { 0, 0, 0, 0 } Choose index 0, applying suffix increment { 1, 1, 1, 1 } Choose index 1, applying suffix increment { 1, 2, 2, 2 } Choose index 1, applying suffix increment { 1, 3, 3, 3 } Choose index 1, applying suffix increment { 1, 4, 4, 4 } Choose index 2, applying suffix increment { 1, 4, 5, 5 } Choose index 3, applying suffix decrement { 1, 4, 5, 4 } Choose index 3, applying suffix decrement { 1, 4, 5, 3 } Total operations = 7
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
यदि हम प्रारंभिक सरणी को B [] के रूप में लेते हैं। पहले तत्व बी [0] को एआर [0] के बराबर बनाने के लिए। हमें प्रत्यय वृद्धि संचालन की गिरफ्तारी [0] संख्या की आवश्यकता होगी। इसके बाद सभी B[0]=B[1]....=B[n-1]=arr[0] बराबर हो जाएंगे।
दूसरे तत्व B[1] को arr[1] के बराबर बनाने के लिए, हमें आवश्यकता होगी | गिरफ्तारी [1]-गिरफ्तारी [0] | संचालन की संख्या। (या तो वेतन वृद्धि या कमी)।
तो B[i] को arr के बराबर बनाने के लिए[i] हमें इसकी आवश्यकता होगी | एआर [i] - एआर [i-1] | संचालन की संख्या।
संचालन की कुल संख्या होगी | गिरफ्तार [0] | + | गिरफ्तारी [1]-गिरफ्तारी [0] | +…. + | arr[n-1]-arr[n-2] |.
-
लक्ष्य सरणी को गिरफ्तारी [] के रूप में लें।
-
फ़ंक्शन incr_decr_op(int arr[], int size) सरणी और उसकी लंबाई लेता है और किसी दिए गए सरणी के निर्माण के लिए प्रत्यय वृद्धि/कमी संचालन की गिनती देता है
-
प्रारंभिक गणना 0 के रूप में लें।
-
ट्रैवर्स ऐरे एआर [] लूप के लिए उपयोग कर रहा है
-
अनुक्रमणिका 0 के लिए गिनने के लिए गिरफ्तारी [i] जोड़ें।
-
अन्य इंडेक्स के लिए गिनती करने के लिए abs(arr[i]-arr[i-1] ) जोड़ें।
-
लूप के अंत में परिणाम के रूप में वापसी की गणना करें।
उदाहरण
#include <bits/stdc++.h> using namespace std; int incr_decr_op(int arr[], int size){ int count = 0; for (int i = 0; i < size; i++){ if (i > 0){ count += abs(arr[i] - arr[i - 1]); } else{ count = count + abs(arr[i]); } } return count; } int main(){ int arr[] = { 3, 3, 1, 2, 2 }; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of suffix increment/decrement operations to construct a given array are: "<<incr_decr_op(arr, size) << endl; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of suffix increment/decrement operations to construct a given array are: 6