如何在各个方向的矩阵中找到具有最小总和的路径

时间:2019-05-17 18:38:17

标签: c++

我需要找到矩阵底部的路径,并且在所有四个方向上的总和必须最小,但是我还需要显示到达那里的路径

在其他资源的帮助下,我设法得到了一些东西,但是只能向左或向上移动,我无法显示路径,只能显示总和。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;



int main()
{
    freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    int a, b; //a x b
    int i, j;
    a = b = 28;
    int Cost[100][100]; // declaring an array of a big size
    //cout<<a<<"\t"<<b<<endl;
    for(i=0;i<a;i++)
    {
        for(j=0;j<b;j++)
        {
            cin>>Cost[i][j];
        }
    }

    int MinCost[a][b];

    MinCost[0][0] = Cost[0][0];

    for(j =1;j <=b-1;j++)
    {
        MinCost[0][j] = MinCost[0][j-1] + Cost[0][j];
    }

    for(i = 1;i<= a-1;i++)
    {
        MinCost[i][0] = MinCost[i-1][0] + Cost[i][0];
    }

    for(i = 1;i<= a-1;i++)
    {
        for(j =1;j <=b-1;j++)
        {

            MinCost[i][j] = min(MinCost[i-1][j],MinCost[i][j-1]) + Cost[i][j];
        }
    }

    cout<<"Minimum cost from (0,0) to (a,b) is "<<MinCost[a-1][b-1]<<" ";

   return 0;
}

当我尝试向右和向上添加min(MinCost[i+1][j],MinCost[i][j+1])时,代码停止工作。如何将所有4个方向相加,并显示所走的路径而不仅仅是总和?

0 个答案:

没有答案