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

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

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

212
111
111

आउटपुट 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. C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम

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

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

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

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

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