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

C++-এ সম অ্যারে পাজল (Sum Array Puzzle) সমাধান

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

যদি বিয়োগ ব্যবহার করা যেত, তবে সহজে সমাধান করা যেত: সব উপাদানের যোগফল বের করে i-তম উপাদান বিয়োগ করে ফলাফল অ্যারেতে রাখলেই হত।

এখানে আমরা প্রতিবার উপাদানগুলো যোগ করব এবং i পজিশনের উপাদান বাদ দিব। i = 0 থেকে n-1 পর্যন্ত। অ্যালগরিদম দেখে বুঝতে পারব।

অ্যালগরিদম

sumArray(arr, n)

শুরু
  res নামক n আকারের অ্যারে সংজ্ঞায়িত করুন
  arr-এর সব উপাদান i এর জন্য, করুন
    sum := 0
    arr-এর সব উপাদান j এর জন্য, করুন
      যদি i এবং j একই না হয়, তবে
        sum := sum + arr[j]
      শেষ যদি
    শেষ করুন
    res[i] = sum
  শেষ করুন
  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 sumArray(int arr[], int resArr[], int n) {
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = 0; j < n; j++) {
            if (i != j) {
                sum += arr[j];
            }
        }
        resArr[i] = sum;
    }
}

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

আউটপুট

Initial Array: 5 4 7 6 9 2 3
Final Array: 31 32 29 30 27 34 33
  1. অ্যারে রিভার্স C++-তে

  2. C++ STL-এ অ্যারে যোগফল (Array Sum)

  3. C++ সম অ্যারে পাজল (Sum Array Puzzle)

  4. C++-এ গুণফল অ্যারে পাজল (Product Array Puzzle) সমাধান