나는 경로의 최저 비용을 얻는 것이 목표입니다. 경로가 수평 또는 대각선으로 진행될 수 있습니다. 수직이 아닙니다. 아래처럼. 이고 첫 번째 행과 마지막 행도 인접합니다. 매트릭스 아래 참조 예를 들어2D 행렬에서 최저 비용 경로를 찾는 방법
:
output for 1st matrix :
16
1 2 3 4 4 5-->path row number
output for second matrix:
11
1 2 1 5 4 5-->path row number
자바에서 그 일을하고는 가장 낮은 경로를 얻고 있지만 행을 사용하여 경로를 인쇄 경로를 받고 있지 않다 번호.
int minCost(int cost[r][r], int m, int n)
{
if (n < 0 || m < 0)
return Integer.MAX_VALUE;;
else if ((m == r-1 && n == c-1)|| n+1>=c)
return cost[m][n];
else
return cost[m][n] + min(minCost(cost, m+1>=r?r-1:m+1,n+1),
minCost(cost, m,n+1),
minCost(cost, m-1>=0?m-1:r-1,n+1));
}
// calling it
minCost(cost, 0, 0);
최단 경로에 대한 행 번호를 얻는 방법은 무엇입니까?
이 알고리즘은'O (3^r)'에서 실행됩니다. 훨씬 효율적인 접근법은 행렬별로 행렬을 반복하고 이전 열에서 다음 열의 열 비용을 계산하는 것입니다. 또는 동적 프로그래밍을 사용합니다. 두 접근법 모두'(min (c, r) * c)'에서 실행되도록 만들 수 있습니다. – fabian
친절하지 않다면 더 설명해주세요. –