কম্পিউটার টিউটোরিয়াল

C++-এ O(1) স্পেসে গুণফল অ্যারে পাজল সমাধান

এখানে অ্যারে সংক্রান্ত একটি আকর্ষণীয় সমস্যা দেখব। n উপাদান বিশিষ্ট একটি অ্যারে দেওয়া আছে। আমাদের আরেকটি n আকারের অ্যারে তৈরি করতে হবে, যেখানে i-তম পজিশনে প্রথম অ্যারের সব উপাদানের গুণফল থাকবে i-তম উপাদান বাদ দিয়ে। সীমাবদ্ধতা: ভাগ অপারেটর ব্যবহার করা যাবে না এবং কোনো অতিরিক্ত স্পেস ব্যবহার করা যাবে না (in-place সমাধান)।

এখানে আমরা একটি temp ভেরিয়েবল ব্যবহার করে বামপাশের গুণফল এবং ডানপাশের গুণফল বের করব। এই মান ফলাফল অ্যারেতে রাখা হবে। অতএব অতিরিক্ত স্পেস লাগবে না।

অ্যালগরিদম

productArray(arr, n)

শুরু
  res নামক n আকারের অ্যারে সংজ্ঞায়িত করুন
  res অ্যারেকে ১ দিয়ে পূরণ করুন
  temp := 1
  i := 0 থেকে n-1 পর্যন্ত, করুন
    res[i] := temp
    temp := temp * arr[i]
  শেষ করুন
  i := n-1 থেকে 0 পর্যন্ত, করুন
    res[i] = res[i] * temp
    temp := temp * arr[i]
  শেষ করুন
  res ফেরত দিন
শেষ

উদাহরণ কোড

#include <iostream>
using namespace std;

void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

void productArray(int arr[], int product[], int n) {
    int temp = 1;
    for (int i = 0; i < n; i++) {
        product[i] = 1; // product-এর সব উপাদান ১ সেট করুন
    }
    for (int i = 0; i < n; i++) { // temp বামপাশের গুণফল ধারণ করবে arr[i] বাদ দিয়ে
        product[i] = temp;
        temp *= arr[i];
    }
    temp = 1;
    for (int i = n - 1; i >= 0; i--) { // temp ডানপাশের গুণফল ধারণ করবে arr[i] বাদ দিয়ে
        product[i] *= temp;
        temp *= arr[i];
    }
}

int main() {
    int myArr[7] = {5, 4, 7, 6, 9, 2, 3};
    int resArr[7];
    cout << "Initial Array: ";
    printArray(myArr, 7);
    productArray(myArr, resArr, 7);
    cout << "Final Array: ";
    printArray(resArr, 7);
    return 0;
}

আউটপুট

Initial Array: 5 4 7 6 9 2 3
Final Array: 9072 11340 6480 7560 5040 22680 15120
  1. অ্যারেতে সর্বোচ্চ গুণফল উপাদান সমূহ (C++ প্রোগ্রাম)

  2. অ্যারের সব উপাদানের গুণফলে ট্রেইলিং জিরোর সংখ্যা গণনা C++-এ

  3. C++-এ অ্যারেতে ট্রিপলেট (সাবসিকোয়েন্স আকার ৩) এর সর্বোচ্চ গুণফল বের করার প্রোগ্রাম

  4. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা