1. 你对动态规划算法的理解(2分)
动态规划是把一个问题拆解成一堆子问题,但不同于分治法,这些子问题间通常会有重叠子问题,每算完一个子问题可以将其储存在另一个二维数组里。再递归方程求解下一个有重叠的子问题,不断的递归求解,这样可以减少重复的计算。
2. 分别列出编程题1、2的递归方程(2分)
1、
for(int i=2;i<=n;i++){
int k = 0;
for(int j=1;j<i;j++){
if(a[j]<=a[i]&&k<b[j]){
k = b[j];
b[i] = k+1;
}
if(max<b[i]){
max = b[i];
}
}
}
2、
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 = r[i][z]+r[z][j];
if(r[i][j]>temp){
r[i][j] = temp;
}
}
}
}
3. 说明结对编程情况(1分)
先各自进行代码的编写,再进行讨论分享各自的算法,提出对方的代码存在的问题以及简化代码,整个编程结对还是十分的和谐顺利。