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

C++ में मैट्रिक्स के अंत तक पहुंचने के लिए आवश्यक न्यूनतम कदम खोजें

मान लीजिए कि हमारे पास सकारात्मक पूर्णांक के साथ एक 2D मैट्रिक्स है। हमें मैट्रिक्स के अंत तक जाने के लिए आवश्यक न्यूनतम कदम खोजने होंगे (सबसे नीचे की सेल), यदि हम सेल (i, j) पर हैं, तो हम सेल (i, j+mat[i, j) पर जा सकते हैं ]) या (i+mat[i, j], j), हम सीमा पार नहीं कर सकते। तो अगर मैट्रिक्स की तरह है -

2 1 2
1 1 1
1 1 1

आउटपुट 2 होगा। पथ होगा (0, 0) →(0, 2) → (2, 2)

यहां हम इसे हल करने के लिए डायनेमिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे। मान लीजिए कि हम सेल (i, j) पर हैं, हम (n-1, n-1) सेल तक पहुंचना चाहते हैं। हम नीचे दिए गए पुनरावर्तन संबंध का उपयोग कर सकते हैं -

DP[i, j]=1+min ⁡(DP [i+arr [i , j] , j], DP[i , j+arr [ i , j]])

उदाहरण

#include<iostream>
#define N 3
using namespace std;
int table[N][N];
bool temp_val[N][N];
int countSteps(int i, int j, int arr[][N]) {
   if (i == N - 1 and j == N - 1)
      return 0;
   if (i > N - 1 || j > N - 1)
      return INT_MAX;
   if (temp_val[i][j])
      return table[i][j];
   temp_val[i][j] = true;
   table[i][j] = 1 + min(countSteps(i + arr[i][j], j, arr), countSteps(i, j + arr[i][j], arr));
   return table[i][j];
}
int main() {
   int arr[N][N] = { { 2, 1, 2 }, { 1, 1, 1 }, { 1, 1, 1 } };
   int ans = countSteps(0, 0, arr);
   if (ans >= INT_MAX)
      cout << -1;
   else
      cout <<"Number of steps: "<< ans;
}

आउटपुट

Number of steps: 2

  1. सी ++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास [u, v] के रूप में पेड़ के किनारों की एक सूची है, यह इंगित करता है कि u और v के बीच एक अप्रत्यक्ष किनारा है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले दौर में, हम आगे बढ़ते हैं, फिर अगले दौर में प्रतिद्वंद्वी चलता है और इसी

  1. C++ में गेम जीतने के लिए आवश्यक न्यूनतम खिलाड़ी

    समस्या कथन प्रत्येक प्रश्न के लिए N प्रश्न और K विकल्प दिए गए हैं, जहां 1 <=N <=1000000000 और 1 <=K <=1000000000। कार्य सभी 1 <=i <के लिए ith प्रश्न का प्रयास करने वाले खिलाड़ी की कुल संख्या का योग निर्धारित करना है। =k किसी भी तरह खेल जीतने के लिए। आपको प्लेयर की कुल संख्या के योग को कम करना होगा

  1. सी # का उपयोग करके सरणी के अंत तक पहुंचने के लिए आवश्यक कूद की न्यूनतम संख्या कैसे प्राप्त करें?

    हम बस पहले तत्व से शुरू कर सकते हैं और पहले तत्व से पहुंचने वाले सभी तत्वों को बार-बार कॉल कर सकते हैं। पहले से अंत तक पहुंचने के लिए कूदने की न्यूनतम संख्या की गणना पहले से पहुंच योग्य तत्वों से अंत तक पहुंचने के लिए आवश्यक छलांगों की न्यूनतम संख्या का उपयोग करके की जा सकती है। ऐरे =={1, 3, 6, 3,