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.结对编程情况:

我与梁家铭同学相处融洽,课上一起相互讨论代码,他也常常给我建议,让我从中收益颇多。课余我们也会讨论作业,一起打题。