算法第三章作业

一、对动态规划算法的理解

       动态规划算法可以将该问题的规模细分为若干个子问题,并取子问题的最优解,逐渐将规模放大到现有,直到可从递归的出口得出最终的答案。

二、两道编程题的递归方程

       7-1:dp[i]表示前i个数字在包含a[i]a[i]情况下的最长上升子序列的长度;

for(int i=0;i<n;i++){
    dp[i]=1;
    for(int j=0;j<i;j++){
        if(a[i]>a[j]&&dp[j]+1>dp[i]) dp[i]=dp[j]+1;
    }
}

       7-2:dp[i]表示当前租金的最优值;

for(int i=1;i<n;i++){
    cin>>temp;
    dp[i]=temp;
}
for(int i=1;i<n;i++){
    for(int j=i+1;j<n;j++){
        cin>>temp;
        if(dp[j]>dp[i]+temp) dp[j]=dp[i]+temp;
    }
}

 

三、结对编程心得体会

       在平时经常进行代码方面的交流,互相吸取对方的长处,在做这两道题之后和队友感觉相互代码思路基本相似,感觉十分有趣。

posted @ 2018-10-28 22:33  晓风长路  阅读(125)  评论(0编辑  收藏  举报