算法第三章作业
1.你对动态规划算法的理解(2分)
把一个大问题变成很多个小问题,并通过求出小问题的最优解,利用他们的关系逐一求出其他问题的最优解。每一个子问题解决完返回给上一个子问题,依次求解出子问题的解从而解决原问题,将相当于将一个问题分成若干部分,环环相扣,由下至上解出答案。由子问题的最优解,慢慢解出原问题的最优解。
2.分别列出编程题1、2的递归方程(2分)
第一题:
for(int i=2;i<=n;i++){
int maxn=1;
for(int j=1;j<i;j++){
if(a[j]<a[i]){
maxn = (dp[j]+1) > maxn ? dp[j]+1 : maxn;
}
}
dp[i]=maxn;
}
第二题:
for(int j=2;j<=n;j++){
for(int i=2;i<j;i++){
dp[1][j]= min(dp[1][i]+dp[i][j] , dp[1][j]);
}
}
- 说明结对编程情况(1分)
结对编程情况良好,可以两个人一起编程,不懂得地方可以问,可以更加轻松得解决问题。