算法设计与分析课程设计 实验指导书.pdfVIP

  • 8
  • 0
  • 约6.93千字
  • 约 10页
  • 2020-12-24 发布于山东
  • 举报

算法设计与分析课程设计 实验指导书.pdf

算法设计与分析课程设计 实验指导书 算法设计与分析课程设计 实验指导书 上海第二工业大学 计算机与信息学院软件工程系 算法设计与分析课程设计 实验指导书 一、运动员比赛日程表 设有 n=2k 个运动员要进行网球比赛。设计一个满足以下要求的比赛日程表:  每个选手必须与其它 n-1 个选手各赛一次  每个选手一天只能赛一次  循环赛一共进行 n-1 天 1、 运用分治策略,该问题的递归算法描述如下,根据算法编制程序并上机 通过。 输入:运动员人数 n (假定 n 恰好为 2 的 i 次方) 输出:比赛日程表A[1..n,1..n] 1. for i←1 to n //设置运动员编号 2. A[i,1]←i 3. end for 4. Calendar(0,n)//位移为 0,运动员人数为 n 。 过程 Calendar(v, k) //v 表示位移(v=起始行-1 ),k 表示运动员人数。 1. if k=2 then //运动员人数为 2 个 2. A[v+2,2]←A[v+1,1] //处理右下角 3. A[v+1,2]←A[v+2,1] //处理右上角 4. else 5. Calendar(v,k/2) //假设已制定了 v+1 至 v+k/2 运动员循环赛日程表 6. Calendar(v+k/2,k/2) //假设已制定了 v+k/2+1 至 v+k 运动员循环赛日程表 7. comment:将 2 个 k/2 人组的解,组合成 1 个 k 人组的解。 8. for i←1 to k/2 9. forj ←1 to k/2 10. A[v+i+k/2,j +k/2]←A[v+i,j ] //沿对角线处理右下角 11. end for 12. end for 13. for i←k/2+1 to k 14. forj ←1 to k/2 15. A[v+i-k/2,j +k/2]←A[v i,j ] //沿对角线处理右上角 16. end for 17. end for 18. end if 2、编制该问题的非递归算法,上机通过。 将如上文件保存在命名为“学号+姓名+实验一”的文件夹中并上传到指定的服务 器。 算法设计与分析课程设计 实验指导书 二、最长公共子序列 运用动态规划法最长公共子序列问题,给出最优值并输出最优解。 提示:最长公共子序列的结构 最长公共子序列的结构有如下表示: 设序列 X=x1, x2, …, xm 和 Y=y1, y2, …, yn 的一个最长公共子序列 Z=z1, z2, …, zk ,则: 若 xm=yn,则 zk=xm=yn 且 Zk-1 是 Xm-1 和 Yn-1 的最长公共子序列; 若 xm≠yn 且 zk≠xm ,则 Z 是 Xm-1 和 Y 的最长公共子序列; 若 xm≠yn 且 zk≠yn ,则 Z 是 X 和 Yn-1 的最长公共子序列。 其中 Xm-1=x1, x2, …, xm-1 ,Yn-1=y1, y2, …, yn-1 ,Zk-1=z1, z2, …, zk-1 。 子问题的递归结构 由最长公共子序列问题的最优子结构性质可知,要找出 X=x1, x2, …, xm 和 Y=y1, y2, …, yn 的最长公共子序列,可按以下方式递归地进行:当 xm=yn 时,找出 Xm-1 和 Yn-1 的最长公共子序列,然后在其尾部加上 xm(=yn)即可得X 和 Y 的一个最长公共子序列。当 xm≠yn 时,必须解两个子问题,

文档评论(0)

1亿VIP精品文档

相关文档