算法第三章作业
一.对动态规划的理解:
动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干个子问题,先求解子问题,再结合这些子问题的解得到原问题的解。不同的是,适合动态规划法的问题经分解得到的子问题往往不是互相独立的。
二.列出编程题1,2的递归方程:
1:
for(int j=2;j<=n;j++)
{
for(int i=1;i<j;i++){
if(a[i]<a[j]&&b[j]<b[i]+1){ //a是输入的数组
b[j]=b[i]+1; //b是记录到i的最大字段和
}
}
}
2:
for(int i = 1; i <= n; i++)
dp[i][i] = 0;
for(int s = 2; s <= n; s++) {
for(int i = 1; i <= n-s+1; i++) {
int j = i + s - 1;
for(int k = i; k <= j-1; k++) {// 比较两种情况租金的大小
dp[i][j] = min(dp[i][j], r[i][k] + r[k][j]);
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
}
}
}
3.说明结对编程的情况:
互相学习,不懂的查书和资料。