多边形游戏_动态规划
2012-03-22 18:14
176 查看
描述:有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符“+”或“*”。所有边依次用整数从1到n编号。
游戏第1步,将一条边删除。
随后n-1步按以下方式操作:
(1)选择一条边E以及由E连接着的2个顶点V1和V2;
(2)用一个新的顶点取代边E以及由E连接着的2个顶点V1和V2。将由顶点V1和V2的整数值通过边E上的运算得到的结果赋予新顶点。
最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。
游戏第1步,将一条边删除。
随后n-1步按以下方式操作:
(1)选择一条边E以及由E连接着的2个顶点V1和V2;
(2)用一个新的顶点取代边E以及由E连接着的2个顶点V1和V2。将由顶点V1和V2的整数值通过边E上的运算得到的结果赋予新顶点。
最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。
输入: | 输入共两行,第一行一个整数n表示顶点个数,第二行共2*n个数,分别为数字和字符。 例如:对于上图中的问题,我们可以这样按输入样例中的例子输入,数学中的“+”号代表加法,小写字母“x”代表乘法。 |
输出: | 一个整数,计算最高得分。 |
输入样例: | 5 10 + -1 x -2 x 3 + -8 x |
输出样例: | 486 |
import java.util.Scanner; public class Main { static int n; static int[][][] m; static int minf,maxf; static char op[]; private static void minMax(int i,int s,int j) { int []e=new int[4]; int a=m[i][s][0], b=m[i][s][1], r=(i+s+1)%n, c=m[r][j-s-1][0], d=m[r][j-s-1][1]; if(op[(r-1+n)%n]=='+') { minf=a+c; maxf=b+d; } else { e[0]=a*c; e[1]=a*d; e[2]=b*c; e[3]=b*d; minf=e[0]; maxf=e[0]; for(int k=1;k<4;k++) { if(minf>e[k]) minf=e[k]; if(maxf<e[k]) maxf=e[k]; } } } public static int polyMax() { for(int j=1;j<n;j++) for(int i=0;i<n;i++) for(int s=0;s<j;s++) { minMax(i,s,j); if(m[i][j][0]>minf) m[i][j][0]=minf; if(m[i][j][1]<maxf) m[i][j][1]=maxf; } int temp=m[0][n-1][1]; for(int i=1;i<n;i++) { if(temp<m[i][n-1][1]) temp=m[i][n-1][1]; } return temp; } public static void main(String arg[]) { Scanner s=new Scanner(System.in); String line=s.nextLine();//读入n n=Integer.parseInt(line); m=new int [2]; op=new char ; line=s.nextLine(); String []sArray=line.split(" "); int i=0; for(int j=0;j<sArray.length;j=j+2) { m[i][0][0]=m[i][0][1]=Integer.parseInt(sArray[j]); i++; } i=0; for(int j=1;j<sArray.length;j=j+2) { op[i]=sArray[j].charAt(0); i++; } System.out.println(polyMax()); } }
相关文章推荐
- 多边形游戏问题——动态规划
- 0015算法笔记——【动态规划】多边形游戏问题
- 0015算法笔记——【动态规划】多边形游戏问题
- 动态规划之多边形的游戏
- 动态规划之多边形游戏
- 多边形游戏(动态规划)
- 0015算法笔记——【动态规划】多边形游戏问题
- 动态规划-多边形游戏问题
- 动态规划--多边形游戏
- 【动态规划】【tyvj】乘法游戏
- 0014算法笔记——【动态规划】凸多边形最优三角剖分
- 蓝桥杯-传球游戏-动态规划-java
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划(01背包)
- 跳跃游戏二——动态规划
- 暗黑游戏(动态规划)
- 用poly2tri库来完成任意多边形三角化,从而在游戏中转化成刚体和渲染图片
- sum游戏 Game of sum uva 10891 动态规划 备忘录(记忆化搜索)
- 题解西电OJ (Problem 1006 - 转盘游戏)--动态规划
- noip2007 矩阵取数游戏 (动态规划+高精度)
- 算法笔记——【动态规划】凸多边形最优三角剖分