কম্পিউটার

C++ এ একটি প্রদত্ত অ্যারে তৈরি করতে প্রত্যয় বৃদ্ধি/হ্রাস অপারেশনের গণনা


আমাদেরকে একটি টার্গেট অ্যারে 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

  1. C++ এ m পরিসর বৃদ্ধির অপারেশনের পর একটি অ্যারেতে সর্বোচ্চ মান

  2. C++ অ্যারেতে দুটি প্রদত্ত উপাদানের মধ্যে উপাদানের সংখ্যা গণনা করুন

  3. C++ এ একটি অ্যারেতে স্বতন্ত্র উপাদান গণনা করুন

  4. C++ এ প্রদত্ত অ্যারেতে ধারাবাহিক উপাদানগুলির GCD থেকে একটি অ্যারে তৈরি করুন