多边形游戏问题-实验报告.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2015-2016 第2 学期 《算法设计与分析》实验报告 多边形游戏问题实验报告 专业班级 计算机科学与技 2014-2 班 学号 2220142506 姓名 刘威威 1、实验环境 Visual C++ 6.0 2、实验目的和要求 给定N 个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号, 并且N 条边按照顺时针依次编号为1~N。下图给出了一个N=4 个顶点的多边形。 游戏规则 : (1) 首先,移走一条边。 (2) 然后进行下面的操作: 选中一条边E,该边有两个相邻的顶点,不妨称为V1 和V2 。 对V1 和V2 顶点所标的整数按照E 上所标运算符号(+或是×)进行运算,得到一个整数;用 该整数标注一个新顶点,该顶点代替V1 和V2 。 (3) 持续进行此操作,直到所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整 数值。 问题:对于给定的多边形,计算最高得分。 3、解题思路、伪代码 3.1 解题思路 解决该问题可用动态规划中的最优子结构性质来解。 设所给的多边形的顶点和边的顺时针序列为op[1],v[1],op[2],v[2],op[3],…,op[n],v[n] 其 1 / 4 2015-2016 第2 学期 《算法设计与分析》实验报告 中,op[i]表示第i 条边所对应的运算符,v[i]表示第i 个顶点上的数值,i=1~n。 在所给的多边形中,从顶点i (1=i=n)开始,长度为j (链中有j 个顶点)的顺时针 链p(i,j)可表示为v[i],op[i+1], …,v[i+j-1] 。 如果这条链的最后一次合并运算在op[i+s]处发生(1=s=j-1),则可在op[i+s]处将链 分割为两个子链p(i,s)和p(i+s,j-s)。 设m[i,j,0]是链p(i,j)合并的最小值,而m[i,j,1]是最大值。若最优合并在op[i+s]处将p(i,j) 分为两个长度小于j 的子链的最大值和最小值均已计算出。即: a=m[i,s,0] b=m[i,s,1] c=m[i+s+1,j,0] d=m[i+s+1,j,1] (1) 当op[i+s]= ’+ ’时 m[i,j,0]=a+c ;m[i,j,1]=b+d (2) 当op[i+s]= ’*’时 m[i,j,0]=min{ac,ad,bc,bd},m[i,j,1]=max{ac,ad,bc,bd} 由于最优断开位置s 有1=s=j-1 的j-1 中情况。 初始边界值为 m[i,1,0]=v[i] 1=i=n m[i,1,1]=v[i] 1=i=n 因为多边形是封闭的,在上面的计算中,当i+sn 时,顶点i+s 实际编号为(i+s)modn。 按上述递推式计算出的m[i,n,1]记为游戏首次删除第i 条边后得到的最大得分。 主链的最大值和最小值可由子链的最大值和最小值得到。 3.2 伪代码 #includestdio.h #define MAX_VETEX_SIZE 20 int REAL_SIZE; int m[MAX_VETEX_SIZE][MAX_VETEX_SIZE+1][2]; int v[MAX_VETEX_SIZE]; char op[MAX_VETEX_SIZE]; void init_m(){ int i; for(i=0;iREAL_SIZE;i++){ m[i][1][0] = v[i]; m[i][1][1] = v[i]; }

文档评论(0)

130***1990 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档