1. 你对动态规划算法的理解(2分)

  动态规划是把一个问题拆解成一堆子问题,但不同于分治法,这些子问题间通常会有重叠子问题,每算完一个子问题可以将其储存在另一个二维数组里。再递归方程求解下一个有重叠的子问题,不断的递归求解,这样可以减少重复的计算。

2. 分别列出编程题12的递归方程(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分)

  先各自进行代码的编写,再进行讨论分享各自的算法,提出对方的代码存在的问题以及简化代码,整个编程结对还是十分的和谐顺利。