একটি অ্যারে arr[] দেওয়া আছে যেটি শুধু ইন্টিজার ধারণ করে এবং একটি বিজোড় সংখ্যা sum। লক্ষ্য হলো একটি সম-অ্যারে arr_2[] তৈরি করা যাতে প্রতিটি arr_2[i] হলো arr[]-এর পূর্বের sum/2 সংখ্যক এলিমেন্ট + arr[i] + পরবর্তী sum/2 সংখ্যক এলিমেন্ট। যদি sum ১ হয় তবে arr_2[i] = arr[i]।
ইনপুট
arr[] = { 4, 1, 7, 5, 2, 9} sum=3
আউটপুট
Construction of sum-array with sum of elements in given range are: 5 12 13 14 16 17 17 9 3
ব্যাখ্যা
সম-অ্যারে নিচের মত তৈরি হয়েছে: arr_2[0] = arr[0] + arr[1] = 4+1 = 5 arr_2[1] = arr[0] + arr[1] + arr[2] = 4+1+7 = 12 arr_2[2] = arr[1] + arr[2] + arr[3] = 1+7+5 = 13 arr_2[3] = arr[2] + arr[3] + arr[4] = 7+5+2 = 14 arr_2[4] = arr[3] + arr[4] + arr[5] = 5+2+9 = 16 arr_2[5] = arr[4] + arr[5] = 2+9 = 11
ইনপুট
arr[] = { 1,2,3,4,5 } sum=5
আউটপুট
Construction of sum-array with sum of elements in given range are: 6 10 15 14 12
ব্যাখ্যা
সম-অ্যারে নিচের মত তৈরি হয়েছে: arr_2[0] = arr[0]+arr[1]+arr[2] = 1+2+3 = 6 arr_2[1] = arr[0]+arr[1]+arr[2]+arr[3] = 1+2+3+4 = 10 arr_2[2] = arr[0]+arr[1]+arr[2]+arr[3]+arr[4] = 1+2+3+4+5 = 15 arr_2[3] = arr[1]+arr[2]+arr[3]+arr[4] = 2+3+4+5 = 14 arr_2[4] = arr[2]+arr[3]+arr[4] = 3+4+5 = 12
প্রোগ্রামে ব্যবহৃত পদ্ধতি:
এই পদ্ধতিতে আমরা স্লাইডিং উইন্ডো কনসেপ্ট ব্যবহার করি। আগের উইন্ডো সমের সাথে ডান পাশের পরবর্তী এলিমেন্ট যোগ করা হয় এবং বাম পাশের এলিমেন্ট বাদ দেওয়া হয়।
- ইন্টিজার অ্যারে
arr[]এবং ভ্যালুsumইনপুট নেওয়া হয়। sum_array(int arr[], int size, int sum)ফাংশন রেঞ্জে এলিমেন্টের যোগফল দিয়ে সম-অ্যারে রিটার্ন করে।- ইনিশিয়াল কাউন্ট ০। সম-অ্যারে
arr_2[size]। temp = sum / 2 + 1।- ০ থেকে
tempপর্যন্ত এলিমেন্ট যোগ করেcount-এ রাখা হয় এবংarr_2[0]সেট করা হয়। - পরবর্তী এলিমেন্টের জন্য ফর লুপ
i=1থেকেi<size। temp_1 = i - (sum/2) - 1। যদি >=0 হয় তবেarr[temp_1]বিয়োগ করা হয়।temp_2 = i + (sum/2)। যদি < size হয় তবেarr[temp_2]যোগ করা হয়।arr_2[i] = countসেট করা হয়।- ফর লুপ শেষে
arr_2[]সম-অ্যারে হিসেবে পাওয়া যায়। - ফর লুপ দিয়ে
arr_2[]প্রিন্ট করা হয়।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void sum_array(int arr[], int size, int sum) {
int count = 0;
int arr_2[size];
int temp = sum / 2 + 1;
for (int i = 0; i < temp; i++) {
count = count + arr[i];
}
arr_2[0] = count;
for (int i = 1; i < size; i++) {
int temp_1 = i - (sum / 2) - 1;
if (temp_1 >= 0) {
count = count - arr[temp_1];
}
int temp_2 = i + (sum / 2);
if (temp_2 < size) {
count = count + arr[temp_2];
}
arr_2[i] = count;
}
cout << "Construction of sum-array with sum of elements in given range are: ";
for (int i = 0; i < size; i++) {
cout << arr_2[i] << " ";
}
}
int main() {
int arr[] = { 4, 1, 7, 5, 2, 9, 6, 2, 1 };
int sum = 3;
int size = sizeof(arr) / sizeof(int);
sum_array(arr, size, sum);
return 0;
}
আউটপুট
Construction of sum-array with sum of elements in given range are: 5 12 13 14 16 17 17 9 3