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

C++ में मैट्रिक्स (या 2D Array) का उपसर्ग योग

इस समस्या में, हमें पूर्णांक मानों की एक 2D सरणी दी जाती है mat[][]। हमारा काम मैट के प्रीफ़िक्स सम मैट्रिक्स को प्रिंट करना है।

उपसर्ग योग मैट्रिक्स: मैट्रिक्स का प्रत्येक तत्व इसके ऊपर और बाईं ओर के तत्वों का योग है। यानी

prefixSum[i][j] = mat[i][j] + mat[i-1][j]...mat[0][j] + mat[i][j-1] +... mat[i][0].

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

Input: arr =[
   [4   6   1]
   [5   7   2]
   [3   8   9]
]
Output:[
   [4   10   11]
   [9   22   25]
   [12   33   45]
]

इस समस्या को हल करने के लिए, एक सरल उपाय है, सभी तत्वों को i,j स्थिति तक ट्रेस करके और उन्हें जोड़कर प्रीफ़िक्ससम का पता लगाना। लेकिन यह सिस्टम के लिए थोड़ा जटिल है।

एक अधिक प्रभावी समाधान प्रीफ़िक्ससम मैट्रिक्स के तत्वों के मूल्यों को खोजने के लिए सूत्र का उपयोग करना होगा।

ij स्थिति में तत्व के लिए सामान्य सूत्र है

prefixSum[i][j] = prefixSum[i-1][j] + prefixSum[i][j-1] - prefixSum[i-1][j-1] + a[i][j]

कुछ विशेष मामले हैं

For i = j = 0, prefixSum[i][j] = a[i][j]
For i = 0 and j > 0, prefixSum[i][j] = prefixSum[i][j-1] + a[i][j]
For i > 0 and j = 0, prefixSum[i][j] = prefixSum[i-1][j] + a[i][j]

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कोड

उदाहरण

#include <iostream>
using namespace std;
#define R 3
#define C 3
void printPrefixSum(int a[][C]) {
   int prefixSum[R][C];
   prefixSum[0][0] = a[0][0];
   for (int i = 1; i < C; i++)
   prefixSum[0][i] = prefixSum[0][i - 1] + a[0][i];
   for (int i = 0; i < R; i++)
   prefixSum[i][0] = prefixSum[i - 1][0] + a[i][0];
   for (int i = 1; i < R; i++) {
      for (int j = 1; j < C; j++)
      prefixSum[i][j]=prefixSum[i- 1][j]+prefixSum[i][j- 1]-prefixSum[i- 1][j- 1]+a[i][j];
   }
   for (int i = 0; i < R; i++) {
      for (int j = 0; j < C; j++)
      cout<<prefixSum[i][j]<<"\t";
      cout<<endl;
   }
}
int main() {
   int mat[R][C] = {
      { 1, 2, 3},
      { 4, 5, 6},
      { 7, 8, 9}
   };
   cout<<"The prefix Sum Matrix is :\n";
   printPrefixSum(mat);
   return 0;
}

आउटपुट

The prefix Sum Matrix is :
1   3   6
5   12   21
12   27   45

  1. सी ++ एसटीएल में ऐरे योग

    सरणी एक रैखिक डेटा संरचना है जो समान डेटा प्रकार के तत्वों को निरंतर स्मृति स्थानों में संग्रहीत करती है। सरणी योग सरणी के सभी तत्वों का योग है। सी ++ प्रोग्रामिंग भाषा में कई विधियां हैं जिनके साथ आप सरणी योग पा सकते हैं। शास्त्रीय पद्धति सरणी के सभी तत्वों का योग खोजने की मूल विधि सरणी के तत्वो

  1. सी++ सम ऐरे पहेली

    सरणी एक डेटा संरचना है जो एक ही डेटा प्रकार के कई तत्वों को संग्रहीत करती है। यह मूल्यों के पूरे सेट को एक साथ स्टोर कर सकता है। लेकिन इसकी लंबाई पहले से तय करने की जरूरत है। इस योग सरणी पहेली में, हमें एक निश्चित आकार, मान लीजिए n की एक सरणी A1 दी गई है। इस पहेली को हल करने के लिए, हम S1 नामक एक स

  1. सी ++ में एक सम ऐरे पहेली?

    यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं। यदि हम घट