एक सरणी को देखते हुए arr[ ] जिसमें केवल पूर्णांक और एक विषम संख्या योग है। लक्ष्य एक योग सरणी बनाना है arr_2[ ] ऐसे प्रत्येक arr_2[i] arr के पिछले योग/2 तत्वों का योग है [] + arr [i] + अगला योग/2 arr के तत्व []। अगर योग 1 है तो 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
स्पष्टीकरण
The sum array is constructed as: 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 = 11s
इनपुट
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. है
स्पष्टीकरण
The sum array is constructed as: 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_array(int arr[], int size, int sum) दी गई श्रेणी में तत्वों के योग के साथ योग-सरणी लौटाता है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
योग सरणी को arr_2[size] के रूप में लें।
-
अस्थायी =योग / 2 + 1. लें।
-
गिनने के लिए 0 से अस्थायी तत्वों की अस्थायी संख्या जोड़ें। और arr_2[0] को गिनती के रूप में सेट करें।
-
योग सरणी के अगले तत्वों के लिए, लूप के लिए i=1 से i<आकार तक का उपयोग करके ट्रैवर्स करें।
-
temp_1 =i − (योग / 2) − 1 लें। अगर यह>=0 है तो arr[temp_1] को गिनती से घटाएं।
-
temp_2 =i + (योग/2) लें। अगर यह <आकार है तो गिनने के लिए arr[temp_2] जोड़ें।
-
arr_2[i] =गिनती सेट करें।
-
लूप के अंत में हमारे पास 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