多边形游戏问题——动态规划

2024-09-01 17:58

本文主要是介绍多边形游戏问题——动态规划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目:单人游戏,开始有一个由n个顶点构成的多边形,每个顶点赋予一个整数值,每条边一个运算符“+”,“ *”

所有边依次用整数1到n编号,

游戏第一步,将一条边删除,随后n-1操作:

选择一条边E及E连接两个顶点V1,V2;用一个新的顶点取代边E及由E连接的两个顶点V1,V2,将由顶点V1和V2整数值通过边E上

的运算得到的结果赋予新顶点,然后所有边呗删除,游戏结束,游戏得分即为所剩顶点整数值

问题:计算最高得分

//多边形游戏

#include<iostream>
using namespace std;
#define N 100
int m[100][100][100];
char op[100];//运算符
int v[100];//顶点数值
int minf,maxf;  
void MinMax(int i, int j, int k)
{
    int e[4], l, 
        a = m[i][k][0], 
        b = m[i][k][1],
        r = (i + k + 1) % N,
        c = m[r][j - k - 1][0],
        d = m[r][j - k - 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 (l = 1; l < 4; l ++) {
            if (minf > e[l]) minf = e[l];
            if (maxf < e[l]) maxf = e[l];
        }
    }
}
void PolyMax()
{
    int i, j, k, max;


    for (j = 1; j < N; j ++)
        for (i = 0; i < N; i ++)
            for (k = 0; k < j; k ++) {
                MinMax(i, j, k);
                if (m[i][j][0] > minf) m[i][j][0] = minf;
                if (m[i][j][1] < maxf) m[i][j][1] = maxf;
            }


    max = m[0][N - 1][1];
    for (i = 1; i < N; i ++)
        if (max < m[i][N - 1][1]) max = m[i][N - 1][1];


    printf("%d\n", max);
}




int main()
{


    int n;//顶点个数  
    while(cin>>n)
    {
        for(int i=1;i<=n;i++)
        {
            cin>>v[i]>>op[i];
        }
        PolyMax();
    }
}

这篇关于多边形游戏问题——动态规划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127653

相关文章

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊