题解 | 三角形最小路径和

三角形最小路径和

https://www.nowcoder.com/practice/c9d44b73dc7c4dbfa4272224b1f9b42c

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param triangle int整型二维数组
 * @param triangleRowLen int triangle数组行数
 * @param triangleColLen int* triangle数组列数
 * @return int整型
 */
int min(int a, int b) {
    if (a < b) {
        return a;
    } else {
        return b;
    }
}
int minTrace(int** triangle, int triangleRowLen, int* triangleColLen ) {
    // write code here
    if (triangleRowLen == 1) {
        return triangle[0][0];
    }
    int dp[triangleRowLen][triangleColLen[triangleRowLen-1]];
    for(int i=0;i<triangleRowLen;i++){
        for(int j=0;j<triangleColLen[i];j++){
            dp[i][j]=0;
        }
    }
    for (int i =0;i< triangleRowLen; i++) {
        for (int j = 0; j < triangleColLen[i]; j++) {
            if (i >= j) {
                if (j == 0) {
                    if(i==0){
                        dp[i][j]=triangle[i][j];
                    }else{
                        dp[i][j] = triangle[i][j] + dp[i - 1][j];
                    }
                    
                }
                else if (i == j) {
                    dp[i][j] = triangle[i][j] + dp[i - 1][j - 1];
                }else{
                    dp[i][j] = triangle[i][j]+min(dp[i - 1][j], dp[i - 1][j - 1]);
                }
                
            }
        }
    }
    int min=dp[triangleRowLen-1][0];
    for(int i=0;i<triangleColLen[triangleRowLen-1];i++){
        if(min<dp[triangleRowLen-1][i]){
            min=min;
        }else{
            min=dp[triangleRowLen-1][i];
        }
    }
    return min;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务