एक सरणी को देखते हुए [m] पूर्णांकों की संख्या और n के साथ, जो एक सरणी में जोड़ा जाने वाला मान है और r प्रश्नों को कुछ प्रारंभ और अंत के साथ दिया जाता है। प्रत्येक क्वेरी के लिए हमें एक सरणी में शुरू से अंत तक मूल्य n जोड़ना होगा।
उदाहरण
Input:
arr[] = {1, 2, 3, 4, 5}
query[] = { { 0, 3 }, { 1, 2 } }
n = 2
Output:
If we run above program then it will generate following output:
Query1: { 3, 4, 5, 6, 5 }
Query2: { 3, 6, 7, 6, 5 } इस कार्यक्रम को एक आसान तरीके से हल किया जा सकता है जिसमें -
- हम क्वेरी में प्रारंभ बिंदु से शुरू होने वाले और क्वेरी में संग्रहीत अंतिम बिंदु तक सभी प्रश्नों को फिर से शुरू करेंगे।
- n का मान जोड़ें और सरणी प्रिंट करें।
एल्गोरिदम
START STEP 1 : DECLARE A STRUCT range for start AND end LIMITS STEP 2 : IN FUNCTION add_tomatrix(int arr[], struct range r[], int n, int size, int m) int i, j, k; LOOP FOR i = 0 AND i < m AND i++ LOOP FOR j = r[i].start AND j<= r[i].end AND j++ arr[j] = arr[j] + n END FOR LOOP FOR k = 0 AND k < size AND k++ PRINT arr[k] END FOR END FOR STOP
उदाहरण
#include <stdio.h>
struct range{
int start, end; //struct to give the range for the array elements
};
int add_tomatrix(int arr[], struct range r[], int n, int size, int m){
int i, j, k;
for ( i = 0; i < m; i++) //for all the elements in a struct we defined{
for(j = r[i].start; j<= r[i].end; j++) //from where till where we want our results to be updated{
arr[j] += n; //add the value of the particular range
}
printf("Query %d:", i+1);
for ( k = 0; k < size; k++){
printf(" %d",arr[k]); // print the whole array after every query
}
printf("\n");
}
}
int main(int argc, char const *argv[]){
int arr[] ={3, 4, 8, 1, 10};
struct range r[] = {{0,2}, {1, 3}, {3, 4}};
int n = 2;
int size = sizeof(arr)/sizeof(arr[0]);
int m = sizeof(r)/sizeof(r[0]);
add_tomatrix(arr, r, n, size, m);
return 0;
} आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
Query 1: 5 6 10 1 10 Query 2: 5 8 12 3 10 Query 3: 5 8 12 5 12