আমাদেরকে একটি টার্গেট অ্যারে arr[] দেওয়া হয়েছে যাতে ধনাত্মক পূর্ণসংখ্যা রয়েছে। লক্ষ্য হল সমস্ত 0s সহ একটি প্রাথমিক অ্যারে ব্যবহার করে লক্ষ্য অ্যারে arr[] তৈরি করা। সমস্ত 0s সহ একটি প্রদত্ত খালি অ্যারেতে প্রয়োগ করা যেতে পারে এমন ক্রিয়াকলাপগুলি বৃদ্ধি/কমানোর ক্রিয়াকলাপ প্রত্যয় করবে৷
যদি আমরা i বলে কোনো সূচক বেছে নিই, তাহলে প্রত্যয় বৃদ্ধির ক্রিয়াকলাপের ক্ষেত্রে আমরা সূচক i থেকে শেষ সূচক পর্যন্ত সমস্ত উপাদানে 1 যোগ করব।
প্রত্যয় হ্রাস অপারেশনের ক্ষেত্রে আমরা সূচক i থেকে শেষ সূচক পর্যন্ত সমস্ত উপাদান থেকে 1 বিয়োগ করব।
আসুন উদাহরণ দিয়ে বুঝতে পারি
ইনপুট − arr[]={ 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
ইনপুট − arr[]={ 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[ ] হিসাবে নিই। প্রথম উপাদান 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 হিসাবে প্রাথমিক গণনা নিন।
-
ট্রাভার্স অ্যারে অ্যারে[] লুপের জন্য ব্যবহার করে
-
সূচক 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