Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में रेंज सम क्वेरी के बाद दी गई सरणी से प्रारंभिक सरणी ज्ञात करें


इस समस्या में, हमें आकार N की एक सरणी res[] दी गई है। हमारा कार्य रेंज सम क्वेरी के बाद दी गई सरणी से प्रारंभिक सरणी ज्ञात करना है।

हमें प्रारंभिक सरणी ढूंढनी है जो [s, e, val] क्वेरी करने पर सरणी rel[] लौटाएगी।

प्रत्येक [s, e, val] क्वेरी को इस तरह हल किया जाता है

s -> शुरुआती इंडेक्स

e -> अंतिम इंडेक्स

val -> सरणी में s से e तक प्रत्येक तत्व में जोड़ा जाने वाला अद्यतन मान।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट : rel[] = {7, 4, 8} Query[][] = {{1, 2, 1}, {0, 1, 3}} आउटपुट : {4, 0, 7}

व्याख्या −

initialArray = {4, 0, 7}; query = {1, 2, 1}; finalArray = {4, 1, 8} initialArray = {4, 1, 8}; query = {0, 1, 3}; finalArray = {7, 4, 8}

समाधान दृष्टिकोण

समस्या का एक सरल समाधान सभी क्वेरी को पार करना है, सभी क्वेरी को हल करें जैसे हम इसे हल करते हैं, फिर अंत में मिली सरणी लौटाएं। यहां, प्रारंभिक सरणी ढूंढने के लिए, हमें इसे विपरीत तरीके से संचालित करने की आवश्यकता है, यानी दी गई सरणी से घटाएं।

उदाहरण

हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम

#include <iostream> using namespace std; void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) {    for (int i = 0; i < q; i++) {       for (int j = query[i][0];j <= query[i][1]; j++) {          arr[j] = arr[j] - query[i][2];       }    }    for (int i = 0; i < n; i++)       cout<<arr[i]<<" "; } int main() {    int arr[] = { 5, 1, 8, 2, 9};    int n = sizeof(arr) / sizeof(arr[0]);    int query[][3] = { {0, 2, -2}, {1, 4, 3}};    int q = sizeof(query) / sizeof(query[0]); cout<<"प्रारंभिक सरणी : "; calcInitialArrayQueries(arr, n, query, q); return 0; }

आउटपुट

प्रारंभिक सरणी : 7 0 7 -1 6 

  1. - C++ में दिए गए वस्तुओं की सरणी से अधिकतम ऊंचाई का पिरामिड ज्ञात करें

    मान लीजिए हमारे पास n वस्तुओं की एक सरणी है। प्रत्येक वस्तु की चौड़ाई W[i] है। हमें उन्हें पिरामिड के तरीके में व्यवस्थित करना है जैसे - i-वें स्तर की कुल चौड़ाई (i+1)-वें स्तर से कम हो i-वें स्तर में वस्तुओं की कुल संख्या (i+1)-वें स्तर से कम हो उदाहरण के लिए, यदि चौड़ाई [40, 100, 20, 30] है, तो

  1. - C++ प्रोग्राम: अपडेट के बिना रेंज सम क्वेरीज

    हमें इंडेक्स 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

  1. - C# का उपयोग करके बैकट्रैकिंग द्वारा दिए गए ऐरे से लक्ष्य योग कैसे खोजें?

    लक्ष्य योग समस्या एक सबसेट खोजने की समस्या है जैसे कि एलिमेंट का योग दी गई संख्या के बराबर हो। बैकट्रैकिंग दृष्टिकोण सबसे खराब स्थिति में सभी क्रमपरिवर्तन उत्पन्न करता है लेकिन सामान्य तौर पर, सबसेट योग समस्या के प्रति रिकर्सिव दृष्टिकोण से बेहतर प्रदर्शन करता है। n सकारात्मक पूर्णांकों का एक सबसेट