동적 계획 -minimum-path-sum
1845 단어 LeetCode
mxn의 행렬이 마이너스 정수를 채우고 왼쪽 상단에서 오른쪽 하단과 가장 작은 경로를 찾습니다.
주: 한 걸음 한 걸음 아래로 가든지 오른쪽으로 가든지.
반복 루틴:
public class Solution {
public int minPathSum(int[][] grid) {
if(grid == null||grid.length == 0||grid[0].length == 0)
return 0;
return help(grid,0,0);
}
public int help(int[][] grid,int row,int col)
{
if(row == grid.length-1&&col == grid[0].length-1)
return grid[row][col];// bottom right
if(row == grid.length-1&&col!=grid[0].length-1)//
return grid[row][col]+help(grid,row,col+1);
if(col == grid[0].length-1&&row!=grid.length-1)//
return grid[row][col]+help(grid,row+1,col);
else//
{
int down=help(grid,row+1,col);
int right=help(grid,row,col+1);
if(down
DP 루틴:
public class Solution {
public int minPathSum(int[][] grid) {
if(grid == null||grid.length == 0||grid[0].length == 0)
return 0;
int row=grid.length;
int col=grid[0].length;
int[][] dp=new int[row][col];
//
dp[row-1][col-1]=grid[row-1][col-1];
//
for(int j=col-2;j>=0;j--)
{
dp[row-1][j]=dp[row-1][j+1]+grid[row-1][j];
}
//
for(int i=row-2;i>=0;i--)
{
dp[i][col-1]=dp[i+1][col-1]+grid[i][col-1];
}
//general
for(int i=row-2;i>=0;i--)
{
for(int j=col-2;j>=0;j--)
{
int down=dp[i+1][j];
int right=dp[i][j+1];
dp[i][j]=down
.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.