1.对动态规划算法的理解:
思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。
动态规划的问题往往比较复杂,直接解决难度较大,因此用以上方法,去寻找子问题的最优解,最后将其合并,对于解决动态规划问题有着很好的效果。
动态规划算法是一个自底而上求解的方法,且在计算过程中不需重复,节省时间,效率高。
2.1、2题的递归方程:
一.
for (int i = 0; i < n; ++i) { dis[i] = 1; for (int j = 0; j < i; ++j) { if (a[i] >= a[j] && dis[i] < dis[j] + 1) { dis[i] = dis[j] + 1; } } if (dis[i] > max_len) { max_len = dis[i]; } }
二。
for(int i=1;i<n;i++) { for(int j=i+1;j<=n;j++) { scanf("%d",&dp[i][j]); } } for(int k=2;k<n;k++) { for(int i=1;i<=n-k;i++) { int j=i+k; for(int z=i+1;z<=j;z++) { int temp=dp[i][z]+dp[z][j]; if(dp[i][j]>temp) dp[i][j]=temp; } } }
3.结对编程情况:
我与梁家铭同学相处融洽,课上一起相互讨论代码,他也常常给我建议,让我从中收益颇多。课余我们也会讨论作业,一起打题。