【题目】 有一个长度为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

相关文章

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 创建序

Java实现按字节长度截取字符串

《Java实现按字节长度截取字符串》在Java中,由于字符串可能包含多字节字符,直接按字节长度截取可能会导致乱码或截取不准确的问题,下面我们就来看看几种按字节长度截取字符串的方法吧... 目录方法一:使用String的getBytes方法方法二:指定字符编码处理方法三:更精确的字符编码处理使用示例注意事项方

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

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

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件