算法第三章作业
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j]
边界条件:
顶部元素:dp[0][0] = triangle[0][0]
左边界元素:dp[i][0] = dp[i-1][0] + triangle[i][0]
右边界元素:dp[i][i] = dp[i-1][i-1] + triangle[i][i]
二维
行范围:从第 0 行到第 n-1 行
列范围:对于第 i 行,从第 0 列到第 i 列
自顶向下:从第 0 行开始,逐行向下计算,直到最后一行,对于每一行,从左到右依次计算
max_value = max(dp[n-1][0], dp[n-1][1], ..., dp[n-1][n-1])
总时间复杂度:O(n²)
空间复杂度:O(n²)
动态规划的本质是将复杂问题分解为相互重叠的子问题,通过解决子问题来构建原问题的解,避免重复计算
动态规划不仅是一种算法技术,更是一种重要的思维方式,它教会我们如何通过分解和组合来解决复杂问题,这种思想在软件设计、系统架构等很多领域都有广泛应用

浙公网安备 33010602011771号