Вывести путь максимальной суммы и сумму в массиве - PullRequest
1 голос
/ 29 мая 2020

Я выполняю задачу, где мне нужно найти путь максимальной суммы в матрице и распечатать путь и сумму. Я сделал эту часть, найдя сумму, но я не могу распечатать путь. Вы можете помочь мне? Вот что я делаю:

#include <iostream>
#include <algorithm> 
#include <vector>
using namespace std;
#define N 100 

int n, m;
int a[N][N];

vector<vector<int> > dp(N, vector<int>(N)),
visited(N, vector<int>(N));

int currentSum = 0;

int totalSum = 0;

void inputMatrix()
{
    n = 3;
    m = 3;
    a[0][0] = 500;
    a[0][1] = 100;
    a[0][2] = 230;
    a[1][0] = 1000;
    a[1][1] = 100;
    a[1][2] = 100;
    a[2][0] = 200;
    a[2][1] = 1000;
    a[2][2] = 200;
}

int maximumSumPath(int i, int j)
{
    if (i == n - 1 && j == m - 1)
        return a[i][j];

    if (visited[i][j])
        return dp[i][j];

    // Marking (i, j) is visited 
    visited[i][j] = 1;

    int& totalSum = dp[i][j];

    if (i < n - 1 && j < m - 1) 
    {
        int current_sum = max(maximumSumPath(i, j + 1), maximumSumPath(i + 1, j));
        totalSum = a[i][j] + current_sum;
    }   
    else if (i == n - 1)
    {
        totalSum = a[i][j] + maximumSumPath(i, j + 1);  
    }
    else
    {
        totalSum = a[i][j] + maximumSumPath(i + 1, j);
    }
    return totalSum;

}

int main()
{
    inputMatrix();   
    int maximumSum = maximumSumPath(0, 0);
    cout << maximumSum << endl;
    system("pause");
    return 0;
}

Как лучше всего напечатать путь с максимальной суммой?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...