动态规划设计法求解多边形游戏.docxVIP

  • 22
  • 0
  • 约3.26千字
  • 约 5页
  • 2018-05-20 发布于福建
  • 举报
算法分析与设计实验报告第次实验实验名称动态规划法求解多边形游戏实验目的通过上机实验,掌握动态规划法的适用条件和解决思路,求解多边形游戏问题,并查看程序运行时间。实验原理设两条子链分别为p(i,j)和p(i+s,j-s),在所有合并方式中的最大值和最小值分别为a,b和c,d;若op[i+s]=’+’,a+cmb+d;否则,min{ac,ad,bc,bd}≤m≤max{ac,ad,bd,bc};主链的最大值可由子链的最大值合并得到,满足最优子结构性质;多边形为封闭的,i+sn时,顶点i+s编号为(i+s)mod n;递推得到m[i][n][1]即为游戏首次删去第i条边后得到的最大值。实验步骤分别用v[]和op[]表示顶点的数字和每条边上的运算符号,m[i][j][0]和m[i][j][1]表示两条子链的最小值和最大值;min,max存储最终的最小值和最大值;从删去第1条边递推遍历,子链合并,找到此时的最大值;然后删去第i条边,依次循环,更新max和min值,得到最终的最大值。即需要一个三重循环实现。关键代码int Polymax(int n,int v[],char op[]){ int i,j,k,s1,r; int min[num],max[num],maxf; int e[4]; for(i=1;i=n;i++) m[i][1][0]=m[i][1][1]=v[i]; for

文档评论(0)

1亿VIP精品文档

相关文档