【题目】 有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量个数,但不能两端都取。所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分

本文主要是介绍【题目】 有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量个数,但不能两端都取。所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 文件名:[作业]
  • 作者:〈漆黑〉
  • 描述:〈 有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量个数,但不能两端都取。所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分。两个人采取的策略都是让自己的得分尽量高,并且两人都足够聪明,求A的得分减去B的得分后的结果。
    【输入格式】
    输入包含多组数据。每组数据的第一行为n(1<=n<=100),第二行为给定的整数序列。输入结束标志为n=0.
    【输出格式】
    对于每组数据,输出A和B都采取最优策略的情况下,A的得分减去B的得分后的结果。 〉
  • 创建时间:2019.7.17
/****************************
* 文件名:[作业]
* 作者:〈漆黑〉
* 描述:〈  有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量个数,但不能两端都取。所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分。两个人采取的策略都是让自己的得分尽量高,并且两人都足够聪明,求A的得分减去B的得分后的结果。
【输入格式】
输入包含多组数据。每组数据的第一行为n(1<=n<=100),第二行为给定的整数序列。输入结束标志为n=0.
【输出格式】
对于每组数据,输出A和B都采取最优策略的情况下,A的得分减去B的得分后的结果。  〉
* 创建时间:2019.7.17
****************************/
#include <iostream>
#include<stdio.h>
using namespace std;int main(){while (1) {int n,  A = 0, B = 0;//n个数,max_l左边最大子列和,max_r右边最大子列和,sum_l暂存左边和, sum_r暂存右边和, A,B存总和cout << "请输入有多少个整数(1-100):";cin >> n;if (n == 0) return 0;//退出标志int* x = new int[n];cout << "请输入给定整数序列:";for (int i = 0; i < n; i++) {cin >> x[i];}int i, j, k = 0, l = n - 1;for (int o = 0; o < n; o++) {int q = 0, w = n - 1, max_l = INT_MIN, max_r = INT_MIN, sum_l = 0, sum_r = 0 ;i = k;j = l;for (; i <= l; i++) {//从左边的最大子序列sum_l += x[i];if (max_l <= sum_l) {max_l = sum_l;q = i;//q为从左最大的下标}}for (; j >= k; j--) {//从右边的最大子序列sum_r += x[j];if (max_r <= sum_r) {max_r = sum_r;w = j;//w为从右最大的下标}}if (o % 2 == 0) {//A先取if (max_l >= max_r) {//左边大A += max_l;k = q + 1;//此时左边从q+1开始找子列}else {//右边大A += max_r;l = w - 1;//此时右边从w - 1开始找子列}}else {//B后取if (max_l >= max_r) {//左边大B += max_l;k = q + 1;//此时左边从q+1开始找子列}else {//右边大B += max_r;l = w - 1;//此时右边从w - 1开始找子列}}if (k > l) {cout << "A的得分减去B的得分后的结果:" << A - B << endl;break;}}}
}

在这里插入图片描述

这篇关于【题目】 有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量个数,但不能两端都取。所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python38个游戏开发库整理汇总

《Python38个游戏开发库整理汇总》文章介绍了多种Python游戏开发库,涵盖2D/3D游戏开发、多人游戏框架及视觉小说引擎,适合不同需求的开发者入门,强调跨平台支持与易用性,并鼓励读者交流反馈以... 目录PyGameCocos2dPySoyPyOgrepygletPanda3DBlenderFife

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序