हमें इंडेक्स i से इंडेक्स j तक के तत्वों का योग निकालना होगा। क्वेरीज़ जिनमें i और j इंडेक्स मान होते हैं, कई बार निष्पादित की जाएंगी।
Input:arr[] = {5, 6, 3, 4, 1 } i = 1, j =3 Output: 13 व्याख्या
6 + 3 + 4 = 13 sum[] = {5, 6+5, 3+6+5, 4+3+6+5, 1+4+3+6+5 } sum[]={5,11,14,18,19} sum[j]-sum[i-1]=sum[3]-sum[1-1]= sum[3]-sum[0]=18-5=13 इसमें तर्क बहुत बुनियादी है: i इंडेक्स से शुरू करके j इंडेक्स तक लूप चलाएं और उन इंडेक्स के बीच के तत्वों का योग करें। लेकिन हम उन्हें अतिरिक्त वेरिएबल में स्टोर नहीं कर सकते इसलिए हम दूसरी सरणी का उपयोग करेंगे जहां हम सरणी तत्व को पिछले सरणी तत्व के साथ जोड़ते हैं और इसी तरह। और फिर j इंडेक्स से हम i-1 इंडेक्स मान घटाएंगे।
उदाहरण
#include <iostream> using namespace std; int rangeSum(int i, int j, int sum[]) { if (i == 0) return sum[j]; return sum[j] - sum[i - 1]; } int main() { int arr[] = { 5, 6, 3, 4, 1 }; int n=5; int sum[5]; sum[0] = arr[0]; for (int i = 1; i < n; i++) { sum[i] = arr[i] + sum[i - 1]; } cout << rangeSum(1, 3, sum) << endl; return 0; } आउटपुट
13