हमें अनुक्रमणिका 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 अनुक्रमणिका से हम 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