动态规划——多边形游戏(求解最优解和最优解路径)

实验目的和要求

目的:利用动态规划实现多边形游戏

要求:给定一个多边形,顶点和边已进行标注。问:按照游戏规则,最高得分(最优值)是多少?对应最高得分,按照什么顺序移走边(最优解)?

规则:游戏第一步,将一条边删除。随后n-1步按照以下方式操作

  1. 选择一条边E以及由E连接着的两个顶点V1和V2;
  2. 用一个新顶点取代边E以及由E连接着的两个顶点V1和V2。将由顶点V1  和V2的整数值通过边E上的运算得到的结果赋予新顶点。

解题思路

       ①由于多边形为环形,为方便处理,创建一个两倍于多边形顶点数的数组,用于存储多边形顶点。即val[i+n] = val[i],i<n。

       ②根据游戏规则,边的删除是不按照顺序进行的,即若需要求i号顶点到j号顶点的最高得分,则i与j之间必然存在一点k,使最高得分为i到k的最优值与k+1到j的最优值进行k号运算符的运算。转化为动态规划,状态转移方程:dp[i][j]=max{dp[i][j],count(dp[i][k],dp[k+1][j],sign[k])},count(int a,int b,char c)用于计算a与b按照c进行运算的最大值。

       ③动态规划初值问题,dp[i][i]表示i号顶点到i号顶点的最优值,即为val[i]。n个顶点的最优值可以通过一次求解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值