हमें एक लक्ष्य सरणी गिरफ्तारी [] दी गई है जिसमें सकारात्मक पूर्णांक हैं। लक्ष्य सभी 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