हमें एक लक्ष्य सरणी arr[] दी गई है जिसमें धनात्मक पूर्णांक हैं। लक्ष्य प्रारंभिक सरणी का उपयोग करके लक्ष्य सरणी arr[] का निर्माण करना है जिसमें सभी 0 हैं। दिए गए खाली सरणी पर लागू किए जा सकने वाले ऑपरेशन प्रत्यय वृद्धि/कमी ऑपरेशन होंगे।
यदि हम कोई सूचकांक चुनते हैं मान लीजिए i, तो प्रत्यय वृद्धि ऑपरेशन के मामले में हम सूचकांक i से अंतिम सूचकांक तक सभी तत्वों में 1 जोड़ देंगे।
प्रत्यय कमी ऑपरेशन के मामले में हम सूचकांक i से अंतिम सूचकांक तक सभी तत्वों से 1 घटा देंगे।
आइए उदाहरणों से समझते हैं
इनपुट - arr[]= { 1,2,3 }
आउटपुट - दी गई सरणी बनाने के लिए प्रत्यय वृद्धि/कमी ऑपरेशनों की गिनती - 3
व्याख्या
{ 0, 0, 0 } से शुरू
सूचकांक 0 चुनें, प्रत्यय वृद्धि लागू करें { 1, 1, 1 }
सूचकांक 1 चुनें, प्रत्यय वृद्धि लागू करें { 1, 2, 2 }
सूचकांक 2 चुनें, प्रत्यय वृद्धि लागू करें { 1, 2, 3 }
कुल ऑपरेशन = 3
इनपुट - arr[]= { 1, 4, 5, 3 }
आउटपुट - दी गई सरणी बनाने के लिए प्रत्यय वृद्धि/कमी ऑपरेशनों की गिनती - 7
व्याख्या
{ 0, 0, 0, 0 } से शुरू
सूचकांक 0 चुनें, प्रत्यय वृद्धि लागू करें { 1, 1, 1, 1 }
सूचकांक 1 चुनें, प्रत्यय वृद्धि लागू करें { 1, 2, 2, 2 }
सूचकांक 1 चुनें, प्रत्यय वृद्धि लागू करें { 1, 3, 3, 3 }
सूचकांक 1 चुनें, प्रत्यय वृद्धि लागू करें { 1, 4, 4, 4 }
सूचकांक 2 चुनें, प्रत्यय वृद्धि लागू करें { 1, 4, 5, 5 }
सूचकांक 3 चुनें, प्रत्यय कमी लागू करें { 1, 4, 5, 4 }
सूचकांक 3 चुनें, प्रत्यय कमी लागू करें { 1, 4, 5, 3 }
कुल ऑपरेशन = 7
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
यदि हम प्रारंभिक सरणी को B[] के रूप में लेते हैं। B[0] को arr[0] के बराबर बनाने के लिए। हमें arr[0] संख्या में प्रत्यय वृद्धि ऑपरेशन की आवश्यकता होगी। इसके बाद सभी B[0]=B[1]....=B[n-1]=arr[0] बराबर होंगे।
B[1] को arr[1] के बराबर बनाने के लिए, हमें | arr[1]-arr[0] | संख्या में ऑपरेशन की आवश्यकता होगी। (या तो वृद्धि या कमी)।
तो B[i] को arr[i] के बराबर बनाने के लिए हमें | arr[i]- arr[i-1] | संख्या में ऑपरेशन की आवश्यकता होगी।
ऑपरेशनों की कुल गिनती होगी | arr[0] | + | arr[1]-arr[0] | + …. + | arr[n-1]-arr[n-2] |।
- लक्ष्य सरणी को arr[] के रूप में लें।
- फ़ंक्शन incr_decr_op(int arr[], int size) सरणी और उसकी लंबाई लेता है और दी गई सरणी बनाने के लिए प्रत्यय वृद्धि/कमी ऑपरेशनों की गिनती वापस करता है
- प्रारंभिक गिनती 0 लें।
- फॉर लूप का उपयोग करके सरणी arr[] को पार करें
- सूचकांक 0 के लिए arr[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