m संख्या के इंटीजर्स के साथ एक ऐरे arr[m] दिया गया है और n, वह मान है जिसे ऐरे में जोड़ा जाना है और r क्वेरीज दी गई हैं जिनमें कुछ स्टार्ट और एंड हैं। प्रत्येक क्वेरी के लिए हमें ऐरे में स्टार्ट से एंड की लिमिट तक मान n जोड़ना है।
उदाहरण
इनपुट: arr[] = {1, 2, 3, 4, 5}
query[] = { { 0, 3 }, { 1, 2 } }
n = 2
आउटपुट:
Query1: { 3, 4, 5, 6, 5 }
Query2: { 3, 6, 7, 6, 5 }
इस प्रोग्राम को एक आसान दृष्टिकोण से हल किया जा सकता है जिसमें:
- हम सभी क्वेरीज को इटरेट करेंगे और ऐरे को क्वेरी में स्टार्ट पॉइंट से ट्रैवर्स करेंगे और क्वेरी में स्टोर्ड एंडिंग पॉइंट तक।
- n का मान जोड़ें और ऐरे प्रिंट करें।
एल्गोरिदम
शुरुआत
चरण 1: स्टार्ट और एंड लिमिट्स के लिए रेंज स्ट्रक्चर घोषित करें
चरण 2: फंक्शन add_tomatrix(int arr[], struct range r[], int n, int size, int m) में
int i, j, k घोषित करें
i = 0 से m तक i++ लूप
j = r[i].start से j <= r[i].end तक j++ लूप
arr[j] = arr[j] + n
लूप समाप्त
k = 0 से size तक k++ लूप
arr[k] प्रिंट करें
लूप समाप्त
लूप समाप्त
समाप्त
उदाहरण
#include <stdio.h>
struct range{
int start, end; // ऐरे एलिमेंट्स के लिए रेंज देने के लिए स्ट्रक्चर
};
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(j = r[i].start; j <= r[i].end; j++) {
arr[j] += n; // विशेष रेंज का मान जोड़ें
}
printf("Query %d:", i+1);
for ( k = 0; k < size; k++){
printf(" %d", arr[k]); // हर क्वेरी के बाद पूरा ऐरे प्रिंट करें
}
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