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

सी ++ में मैट्रिक्स में समान आयताकार रकम वाले सेल प्रिंट करें

इस समस्या में, हमें एक मैट्रिक्स दिया जाता है mat पूर्णांक मानों के आकार mXn का। हमारा काम एक प्रोग्राम बनाना है एक मैट्रिक्स में समान आयताकार योग के साथ सेल प्रिंट करें

समस्या का विवरण: हम मैट्रिक्स में एक सेल इस तरह से खोजेंगे कि उप-मैट्रिस का योग जो सेल के साथ शुरू और समाप्त हो रहा है, शेष सभी तत्वों के योग के बराबर है।

एक सेल के लिए मैट्रिक्स (ए, बी) सब-मैट्रिक्स मैट [0] [0] से मैट [ए] [बी] और मैट [ए] [बी] से मैट [एम] [एन] के बराबर है शेष सभी तत्वों का योग।

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

इनपुट: चटाई [] [] ={ {5, 0, 2, 7}
{3, 0, 1, 0}
{1, 4, 1, 3}
{10, 0, 2, 1}}

आउटपुट: (2, 1)

स्पष्टीकरण:

तत्व के लिए (2,3)

सबमैट्रिक्स1 है - { {5, 0}
{3, 0}
{1, 4}}

Submatrix2 है - { {4, 1, 3}
{0, 2, 1}}

योग =5 + 0 + 3 + 0 + 1 + 4 + 1 + 3 + 0 + 2 + 1 =20

शेष तत्वों का योग =2 + 7 + 1 + 0 + 10 =20

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

समस्या को हल करने के लिए, हमें 2 सहायक उप-मैट्रिसेस बनाने होंगे, aux1[m][n] और aux2[m][n]। aux1[i][j] (0,0) से (i, j) तक सभी तत्वों का योग संग्रहीत करेगा और aux2[i][j] (i,j) से (i,j) तक सभी तत्वों का योग संग्रहीत करेगा ( एन, एम)। फिर हम दोनों योगों को जोड़ देंगे और मैट(i,j) को घटा देंगे क्योंकि यह दो बार आएगा।

फिर हम इस योग की तुलना मैट्रिक्स के सभी तत्वों के योग से करेंगे। यदि सेल का योग मैट्रिक्स के योग का आधा है। फिर परिणाम सेल है, और हम इसे प्रिंट करेंगे।

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

उदाहरण

#include <iostream>
using namespace std;
#define R 4
#define C 4

void findCellWithSameRectSum(int mat[R][C]) {
   
   int m = R, n = C;
   int aux1[m][n], aux2[m][n];
   int matSum = 0;
   
   for (int i = 0; i < m; i++) {
      for (int j = 0; j < n; j++) {
         
         aux2[i][j] = aux1[i][j] = mat[i][j];
         matSum += mat[i][j];
         
      }
   }

   for (int i = 1; i < m; i++) {
     
      aux1[i][0] += aux1[i-1][0];
      aux2[m-i-1][n-1] += aux2[m-i][n-1];
   }

   for (int j = 1; j < n; j++) {
     
      aux1[0][j] += aux1[0][j-1];
      aux2[m-1][n-j-1] += aux2[m-1][n-j];
   }

   for (int i = 1; i < m; i++)
      for (int j = 1; j < n; j++) {
         
         aux1[i][j] += aux1[i-1][j] + aux1[i][j-1] - aux1[i-1][j-1];
         aux2[m-i-1][n-j-1] += aux2[m-i][n-j-1] + aux2[m-i-1][n-j] - aux2[m-i][n-j];
      }

   for (int i = 0; i < m; i++)
      for (int j = 0; j < n; j++)
         if (matSum == 2 * (aux1[i][j] + aux2[i][j] - mat[i][j]))
            cout << "(" << i << ", " << j << ")\t";
}

int main() {
   int mat[R][C] = {{5, 0, 2, 7},
                {3, 0, 1, 0},
                {1, 4, 1, 3},
                {10, 0, 2, 1}};
   cout<<"The cells with same rectangular sums in a matrix is \n";
   findCellWithSameRectSum(mat);

   return 0;
}

आउटपुट

The cells with same rectangular sums in a matrix is
(1, 1)           (2, 1)

  1. दिए गए मैट्रिक्स को C++ में वामावर्त सर्पिल रूप में प्रिंट करें

    इस समस्या में, हमें एक 2-आयामी मैट्रिक्स दिया गया है। और हमारा काम मैट्रिक्स के तत्वों को वामावर्त सर्पिल में से प्रिंट करना है। वामावर्त सर्पिल रूप - यह एक सर्पिल ट्रैवर्सल है जो ऊपर-बाएं से शुरू होता है और वामावर्त दिशा में पहले नीचे-दाएं-ऊपर-बाएं जाता है। वामावर्त ट्रैवर्सल 1 5 9 13 14 15 16

  1. सी ++ में मैट्रिक्स में सुरक्षित सेल खोजें

    मान लीजिए कि हमारे पास एक मैट्रिक्स मैट है [] []। इसमें Z और P अक्षर हैं। Z ज़ोंबी है और P पौधा है। और एक अन्य पात्र * एक नंगी भूमि है। एक ज़ोंबी पौधे पर हमला कर सकता है, जब पौधा ज़ोंबी के निकट होता है। हमें ऐसे पौधों की संख्या का पता लगाना है, जो जॉम्बी से सुरक्षित हैं। मान लीजिए मैट्रिक्स नीचे जैस

  1. सी ++ प्रोग्राम मैट्रिक्स को जेड फॉर्म में प्रिंट करने के लिए?

    यहां हम देखेंगे कि मैट्रिक्स तत्वों को Z रूप में कैसे प्रिंट किया जाए। तो अगर सरणी नीचे की तरह है - 5 8 7 1 2 3 6 4 1 7 8 9 4 8 1 5 फिर इसे इस तरह प्रिंट किया जाएगा:5, 8, 7, 1, 6, 7, 4, 8, 1, 5 एल्गोरिदम प्रिंटमैट्रिक्सजेड(मैट) Begin    print the first row    i := 1, j := n-2 &n