多边形游戏(DP)
2018-06-18 03:55:20来源:未知 阅读 ()
Description
多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符 "+" 或 "*"。所有边依次用整数从1到n编号。
游戏第1步,将一条边删除。
随后的n-1步按以下方式操作:
(1)选择一条边E以及由E连接着的两个顶点V1和V2;
(2)用一个新的顶点取代边E以及由E连接着的两个顶点V1和V2。将由顶点V1和V2的整数值通过边E上的运算得到的结果赋予新顶点。
最后,所有边都被删除,游戏结束。游戏的得分就是所剩顶点上的整数值。
问题:对于给定的多边形,计算最高得分W ( -231 < W < 231 )。
Input
输入的第一行是单独一个整数n( 3 ≤ n ≤ 18 ),表示多边形的顶点数(同时也是边数)。接下来第n行,每行包含一个运算符("+"或"*")和一个整数V[i]( -10 < V[i] < 10 ),分别表示第i条边所对应的运算符和第i个顶点上的数值。
Output
输出只有一个整数,表示最高得分W。
Sample Input
3
+
2
* 3
+ 1
Sample Output
9
#include<string.h> #include<stdio.h> #include<iostream> #define MAX 102 using namespace std; int v[MAX]; char op[MAX]; int n,minf,maxf; int m[MAX][MAX][2]; void minMax(int i,int s,int j) { int e[5]; int a=m[i][s][0], b=m[i][s][1], r=(i+s-1)%n+1, c=m[r][j-s][0], d=m[r][j-s][1]; if(op[r]=='+') { minf=a+c; maxf=b+d; } else { e[1]=a*c; e[2]=a*d; e[3]=b*c; e[4]=b*d; minf=e[1]; maxf=e[1]; for(int k=2; k<5; k++) { if(minf>e[k]) minf=e[k]; if(maxf<e[k]) maxf=e[k]; } } } int polyMax(){ for(int i=1;i<=n;i++) for(int j=2;j<=n;j++){ m[i][j][0]=1000000; m[i][j][1]=-1000000; } for(int j=2; j<=n; j++) for(int i=1; i<=n; i++) for(int s=1; 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[1][n][1]; for(int i=2; i<=n;i++) if(temp<m[i][n][1]) temp=m[i][n][1]; return temp; } int main() { memset(m,0,sizeof(m)); cin >> n; getchar(); for(int i=1;i<=n;i++) { cin >> op[i] >> v[i]; getchar(); m[i][1][0]=m[i][1][1]=v[i]; } cout << polyMax() <<endl; return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:c基础_笔记_1
- C语言实现经典游戏——扫雷! 2020-04-17
- 小游戏二之---------------五子棋 2020-03-23
- Qt5小Demo之猜数字游戏 2020-03-19
- 使用QT绘制一个多边形 2020-03-06
- [Uva1637][DFS][记忆化] 纸牌游戏 Double Patience 2020-03-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash