Every day a leetcode
题目来源:120. 三角形最小路径和
解法1:动态规划
代码:
int min(int a,int b)
{
return a>b?b:a;
}
int minimumTotal(int** triangle, int triangleSize, int* triangleColSize){
int n=triangleSize;
int dp[n][n];
memset(dp,0,sizeof(dp));
// dp初始化
dp[0][0]=triangle[0][0];
// 状态转移方程
for(int i=1;i<n;i++)
{
dp[i][0]=dp[i-1][0]+triangle[i][0];
for (int j=1;j<i;j++)
{
dp[i][j]=min(dp[i-1][j-1],dp[i-1][j])+triangle[i][j];
}
dp[i][i]=dp[i-1][i-1]+triangle[i][i];
}
int ans=dp[n-1][0];
for(int i=1;i<n;i++)
{
if(dp[n-1][i]<ans) ans=dp[n-1][i];
}
return ans;
}
结果:

本文介绍了一种使用动态规划解决120.三角形最小路径和问题的方法。通过逐层计算从顶部到底部的最短路径和,最终找出所有可能路径中的最小值。
1083

被折叠的 条评论
为什么被折叠?



