算法第三章作业——动态规划
1.对动态规划算法的理解
1).具有最优子结构和重叠子问题
2).后面的数据会对前面的结果产生影响
3).关键是找到正确的递归方程
2.列出编程题1、2的递归方程
编程题1
for (int i = 1 ; i < n ; i ++ ) { dp[i] = 1; for (int j = 0 ; j <= i ; j ++ ) { if (num[j] < num[i] && dp[j] > dp[i] - 1) { dp[i] = dp[i] + 1; } } }
编程题2
for (int r = 2 ; r <= n ; r ++ ) { for (int i = 1 ; i <= n - r + 1 ; i ++ ) { int j = i + r - 1; for (int k = i ; k <= j ; k ++ ) { int t = price[i][k] + price[k][j]; if (t < price[i][j]) price[i][j] = t; } } }