算法第3章作业
2018-11-09 15:03 葡萄葡萄葡葡萄 阅读(228) 评论(0) 收藏 举报1、对动态规划算法的理解
动态规划算法的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后再从这些子问题的解得到原问题的解,但是在求解过程中分解得到的子问题往往不是相互独立的,可以用一个表记录所有已解决的子问题的答案,不管该子问题以后是否被用到,只要被计算过就填入表中。在分析过程中还应写出递归方程式,判断表中数据的求解顺序。动态规划算法适用于解最优化问题,通常可以按照以下四个步骤设计(1)找出最优解性质,并刻画其结构特征;(2)递归地定义最优值:(3)以自底向上的方式计算最优解;(4)根据计算最优值得到的信息,构造最优解。
2、分别列出编程题1、2的递归方程
1、用数组cal存储最长的序列的个数
cal[i]=max(cal[i],cal[j]+1) ( j<i && cal[j]<cal[i] );
2、用数组a[i][j]表示第i个港口到第j个港口的价格
dp[i]=0,i=n
dp[i]=min(a[i][k],dp[k]),i<k<=j,i<n
3、说明结对编程情况
第一道题是逻辑上的问题,经过讨论后解决,第二道题在重新开辟一个数组记录最小价格时有一个测试点错误,后来同伴把价格表同时作为记录表进行比较记录时编译通过。总之,结伴编程能更快发现错误以及完成作业。
浙公网安备 33010602011771号