算法第三章作业
一、对动态规划算法的理解
动态规划算法可以将该问题的规模细分为若干个子问题,并取子问题的最优解,逐渐将规模放大到现有,直到可从递归的出口得出最终的答案。
二、两道编程题的递归方程
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; } }
三、结对编程心得体会
在平时经常进行代码方面的交流,互相吸取对方的长处,在做这两道题之后和队友感觉相互代码思路基本相似,感觉十分有趣。