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

सी++ में 2डी मैट्रिक्स में संभावित पथ की जांच करें

विचार करें कि हमारे पास 2D सरणी है। हमें यह पता लगाना है कि क्या हमें ऊपरी बाएँ कोने से नीचे-दाएँ कोने तक का रास्ता मिल सकता है। मैट्रिक्स 0s और 1s से भरा है। 0 खुले क्षेत्र को इंगित करता है, 1 रुकावट को इंगित करता है। ध्यान दें कि ऊपरी-बाएँ कोने हमेशा 1 रहेगा।

मान लीजिए कि एक मैट्रिक्स नीचे जैसा है -

0 0 0 1 0
1 0 0 1 1
0 0 0 1 0
1 0 0 0 0
0 0 1 0 0

एक पथ को हरे रंग से चिह्नित किया गया है, कुछ अन्य पथ भी हैं। तो कार्यक्रम सही होगा, अगर कोई रास्ता है, अन्यथा गलत है।

हम सभी सुलभ नोड को -1 में बदलकर इस समस्या को हल करेंगे, पहले शुरुआती बिंदु के मान को -1 में बदलें, फिर पहली पंक्ति में अगला मान प्राप्त करें, और पिछले मान की तुलना करें, वर्तमान मान को पिछले मान के बराबर सेट करें अगर यह पहुंच योग्य है (0 नहीं)। कॉलम मानों के लिए भी ऐसा ही करें। पिछले कॉलम मानों के साथ वर्तमान की तुलना और सेट करके यदि वह उपलब्ध है। फिर पहली पंक्ति, पहले कॉलम से शुरू करें, और पिछली पंक्ति, पिछले कॉलम के मान लें, उनके बीच न्यूनतम प्राप्त करें। और वर्तमान सूचकांक को न्यूनतम में सेट करें। यदि वर्तमान सूचकांक 1 है, तो कोई परिवर्तन नहीं है। अंत में यदि अंतिम सूचकांक नीचे-दाईं ओर के समान है, तो सही है, अन्यथा गलत है।

उदाहरण

#include <iostream>
#define row 5
#define col 5
using namespace std;
bool isPathPresent(int arr[row][col]) {
   arr[0][0] = -1;
   for (int i = 1; i < row; i++)
      if (arr[i][0] != 1)
         arr[i][0] = arr[i - 1][0];
   for (int j = 1; j < col; j++)
      if (arr[0][j] != 1)
         arr[0][j] = arr[0][j - 1];
   for (int i = 1; i < row; i++)
      for (int j = 1; j < col; j++)
         if (arr[i][j] != 1)
            arr[i][j] = min(arr[i][j - 1], arr[i - 1][j]);
   return (arr[row - 1][col - 1] == -1);
}
int main() {
   int arr[row][col] = {{ 0, 0, 0, 1, 0},
      {1, 0, 0, 1, 1},
      { 0, 0, 0, 1, 0},
      {1, 0, 0, 0, 0},
      { 0, 0, 1, 0, 0}};
   if (isPathPresent(arr))
      cout << "Path is present";
   else
      cout << "No path has found";
}

आउटपुट

Path is present

  1. C++ में मैट्रिक्स कम त्रिकोणीय है या नहीं यह जांचने के लिए प्रोग्राम

    एक वर्ग मैट्रिक्स दिया गया है M[r][c] जहां r कुछ पंक्तियों की संख्या है और c ऐसे कॉलम हैं जैसे r =c, हमें यह जांचना होगा कि M निचला त्रिकोणीय मैट्रिक्स है या नहीं। निचला त्रिकोणीय मैट्रिक्स - निचला त्रिकोणीय मैट्रिक्स एक मैट्रिक्स है जिसमें मुख्य विकर्ण (मुख्य विकर्ण सहित) के नीचे के तत्व शून्य नही

  1. सी++ में इनवॉल्यूटरी मैट्रिक्स की जांच करने का कार्यक्रम

    एक मैट्रिक्स दिया गया है M[r][c], r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को दर्शाता है जैसे कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें यह जांचना है कि दिया गया वर्ग मैट्रिक्स एक इन्वॉल्वरी मैट्रिक्स . है या नहीं या नहीं। इनवॉल्यूटरी मैट्रिक्स एक मैट्रिक्स को इनवॉल्वरी . कहा जाता है म

  1. C++ में idempotent मैट्रिक्स की जांच करने का कार्यक्रम

    एक मैट्रिक्स दिया गया है M[r][c], r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को दर्शाता है जैसे कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें यह जांचना है कि दिया गया वर्ग मैट्रिक्स एक बेकार मैट्रिक्स . है या नहीं या नहीं। बेकार मैट्रिक्स एक मैट्रिक्स M को बेवकूफ मैट्रिक्स . कहा जाता है य