কম্পিউটার

C++ এ একটি সমষ্টি অ্যারে ধাঁধা?


এখানে আমরা অ্যারে সম্পর্কিত একটি আকর্ষণীয় সমস্যা দেখতে পাব। n উপাদান সহ একটি অ্যারে আছে. আমাদের n উপাদানের আরেকটি অ্যারে তৈরি করতে হবে। কিন্তু দ্বিতীয় অ্যারের i-th অবস্থানটি i-th উপাদান ছাড়া প্রথম অ্যারের সমস্ত উপাদানের যোগফল ধরে রাখবে। এবং একটি সীমাবদ্ধতা হল আমরা এই সমস্যায় বিয়োগ অপারেটর ব্যবহার করতে পারি না।

আমরা যদি বিয়োগ, ক্রিয়াকলাপ ব্যবহার করতে পারি, তাহলে আমরা সহজেই এই সমস্যার সমাধান করতে পারি, সমস্ত উপাদানের যোগফল পেয়ে, তারপর প্রথম অ্যারের i-th উপাদান বিয়োগ করে দ্বিতীয় অ্যারের i-th স্থানে সংরক্ষণ করতে পারি।

এখানে আমরা প্রতিবার উপাদান যোগ করে এর সমাধান করছি, এবং i অবস্থানে থাকা উপাদানটিকে 0..n-1-এর জন্য উপেক্ষা করছি। আসুন বিন্দু পেতে অ্যালগরিদম দেখি।

অ্যালগরিদম

sumArray(arr, n)

begin
   define an array called res of size n
   for all elements i in arr, do
      sum := 0
      for all elements j in arr, do
         if i and j are not same, then
            sum := sum + arr[j]
         end if
      done
      res[i] = sum
   done
   return res
end

উদাহরণ

#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;
   }
}
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);
}

আউটপুট

Initial Array: 5 4 7 6 9 2 3
Final Array: 31 32 29 30 27 34 33

  1. C++ এ একটি অ্যারে বিপরীত করুন

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

  3. C++ সাম অ্যারে ধাঁধা

  4. C++ এ একটি পণ্য অ্যারে ধাঁধা?