আমাদের একটি টার্গেট অ্যারে arr[] দেওয়া আছে যেটিতে ধনাত্মক পূর্ণসংখ্যা রয়েছে। লক্ষ্য হল টার্গেট অ্যারে arr[] কে শূন্য ভরা একটি প্রাথমিক অ্যারে থেকে নির্মাণ করা। দেওয়া খালি অ্যারেতে যেসব অপেরেশন প্রয়োগ করা যাবে সেগুলো হল সাফিক্স ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেশন।
যদি আমরা কোনো ইনডেক্স i বেছে নিই, তবে সাফিক্স ইনক্রিমেন্ট অপারেশনে আমরা ইনডেক্স i থেকে শেষ ইনডেক্স পর্যন্ত সকল উপাদানে ১ যোগ করব।
সাফিক্স ডিক্রিমেন্ট অপারেশনে আমরা ইনডেক্স i থেকে শেষ ইনডেক্স পর্যন্ত সকল উপাদান থেকে ১ বিয়োগ করব।
ইনপুট: arr[] = {1, 2, 3}
আউটপুট: দেওয়া অ্যারে নির্মাণে সাফিক্স ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেশনের গণনা: 3
ব্যাখ্যা:
{0, 0, 0} থেকে শুরু
ইনডেক্স ০ বেছে নিলে, সাফিক্স ইনক্রিমেন্ট: {1, 1, 1}
ইনডেক্স ১ বেছে নিলে, সাফিক্স ইনক্রিমেন্ট: {1, 2, 2}
ইনডেক্স ২ বেছে নিলে, সাফিক্স ইনক্রিমেন্ট: {1, 2, 3}
মোট অপারেশন = ৩
ইনপুট: arr[] = {1, 4, 5, 3}
আউটপুট: দেওয়া অ্যারে নির্মাণে সাফিক্স ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেশনের গণনা: 7
ব্যাখ্যা:
{0, 0, 0, 0} থেকে শুরু
ইনডেক্স ০: সাফিক্স ইনক্রিমেন্ট → {1, 1, 1, 1}
ইনডেক্স ১: সাফিক্স ইনক্রিমেন্ট → {1, 2, 2, 2}
ইনডেক্স ১: সাফিক্স ইনক্রিমেন্ট → {1, 3, 3, 3}
ইনডেক্স ১: সাফিক্স ইনক্রিমেন্ট → {1, 4, 4, 4}
ইনডেক্স ২: সাফিক্স ইনক্রিমেন্ট → {1, 4, 5, 5}
ইনডেক্স ৩: সাফিক্স ডিক্রিমেন্ট → {1, 4, 5, 4}
ইনডেক্স ৩: সাফিক্স ডিক্রিমেন্ট → {1, 4, 5, 3}
মোট অপারেশন = ৭
যদি আমরা প্রাথমিক অ্যারে 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) ফাংশন অ্যারে এবং এর দৈর্ঘ্য নেয় এবং সাফিক্স ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেশনের গণনা ফেরত দেয়।
- আরম্ভিক গণনা ০ নিন।
- for লুপ দিয়ে অ্যারে arr[] ট্রভার্স করুন।
- ইনডেক্স ০ এর জন্য arr[i] কে count-এ যোগ করুন।
- অন্য ইনডেক্সের জন্য abs(arr[i]-arr[i-1]) কে count-এ যোগ করুন।
- for লুপ শেষে count ফলাফল হিসেবে ফেরত দিন।
#includeusing 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; return 0; }
Count of suffix increment/decrement operations to construct a given array are: 6