c语言算法动态规划
发布时间: 2023-08-21 17:39:07
动态规划算法一般是n步叠代计算局部最优解,每一步叠代需要计算m个子项,那么时间复杂度就是O(m*n)。
如果只保存一步叠代的结果,空间复杂度就是O(m);如果需要保存k步叠代结果,空间复杂度就是O(m*k)。
㈡ 如何用c语言编程实现动态规划
动态规划主要是 状态 & 状态转移方程 如果转移方程写出来了 程序就自然出来啦
对于这题 dp[i][j] 表示 走到格子 (i,j) 时 的总和最大值 val[i][j] 表示格子 (i, j) 的值
那么有 dp[i][j] = max( dp[i-1][j] , dp[i][j-1]) + val[i][j];
当然 边界的时候要特殊考虑一下
for(int i = 1; i <= m ; i++)
for(int j = 1; j <= n; j++)
{
if( i == 1 ) ....;
else if( j == 1 ) ....;
else dp[i][j] = max( dp[i-1][j] , dp[i][j-1]) + val[i][j];
}
最后 dp[m][n] 就是答案啦 ^ ^
热点内容