কম্পিউটার

অ্যারেকে C++ এ সমান সমষ্টির দুটি সাবয়ারেতে ভাগ করা যায় কিনা তা খুঁজুন


ধরুন আমাদের একটি অ্যারে A আছে। আমাদের পরীক্ষা করতে হবে যে আমরা অ্যারেটিকে দুটি ভাগে ভাগ করতে পারি, যার যোগফল সমান। ধরুন উপাদানগুলি হল [6, 1, 3, 2, 5], তাহলে [6, 1], এবং [2, 5] দুটি সাবঅ্যারে হতে পারে৷

এই নিয়মগুলি অনুসরণ করে এই সমস্যাটি সহজেই সমাধান করা যেতে পারে। আমাদের প্রথমে অ্যারের সমস্ত উপাদানের যোগফল খুঁজে বের করতে হবে, তারপর অ্যারের প্রতিটি উপাদানের জন্য, আমরা total_sum – এ পর্যন্ত পাওয়া উপাদানগুলির যোগফল ব্যবহার করে সঠিক যোগফল গণনা করতে পারি।

উদাহরণ

#include<iostream>
#include<numeric>
using namespace std;
void displaySubArray(int arr[], int left, int right) {
   cout << "[ ";
   for (int i = left; i <= right; i++)
      cout << arr[i] << " ";
      cout << "] ";
   }
   void subarrayOfSameSum(int arr[] , int n) {
      int total_sum = accumulate(arr, arr+n, 0);
      int so_far_sum = 0;
      for(int i = 0; i<n; i++){
         if(2*so_far_sum+arr[i] == total_sum){
            cout << "subarray 1: "; displaySubArray(arr, 0, i-1);
            cout << "\nsubarray 2: "; displaySubArray(arr, i+1, n-1);
               return;
         }
         so_far_sum += arr[i];
      }
   cout << "No subarray can be formed";
}
int main() {
   int arr[] = {6, 1, 3, 2, 5} ;
   int n = sizeof(arr)/sizeof(arr[0]);
   subarrayOfSameSum(arr, n);
}

আউটপুট

subarray 1: [ 6 1 ]
subarray 2: [ 2 5 ]

  1. একটি বড় সংখ্যাকে C++ এ সমান যোগফলের দুই বা ততোধিক অংশে ভাগ করা যায় কিনা তা পরীক্ষা করুন

  2. একটি সংখ্যাকে C++ এ দুটি প্রচুর সংখ্যার যোগফল হিসাবে প্রকাশ করা যায় কিনা তা পরীক্ষা করুন

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

  4. পাইথনে যে সমষ্টিগুলির জন্য একটি অ্যারেকে সমান সমষ্টির সাব্যারেতে ভাগ করা যায় তা সন্ধান করুন