问题描述
  逗志芃又一次面临了危机。逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了。现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数**(n是偶数)**写成一行,然后两个人轮流取数,每次只能从最前面或者最后面取走一个数,全部取完则游戏结束,之后每个人取走的数的和就是每个人的得分。由于逗志芃妹子很厉害,但他又不想输,所以只能找到你了,你要告诉他最多可以得到多少分。(注意,妹子智商是maxlongint所以是不会犯错的,每次的策略必然最优,而且逗志芃是先手)
输入格式
  第一行一个数n,表示有n个数。
  第二行就是进行游戏的n个数。
输出格式
  一个数,最高得分
样例输入
2
10 20
样例输出
20
数据规模和约定
  例:0<n,m<=1000,每个数不超过10000 。
————————————————————————————————————————
解题思路:题目要求,给出的数是偶数,刚好两人拿得次数相同。两个人都是最优策略,A是先手,肯定是选能让分数最多的咯。而B是后手,B要想拿最多分,意味着B要阻止A拿多分,B拿完后,剩下的分数要使得A后面拿得分数最少。采用递归,题目数据比较大,就会超时,所以要有剪枝。


import java.util.Scanner;public class Main {static int[][] res = new int[1000][1000];//用来存储已经计算过的值,后面又遇到相同问题时可以直接使用,避免重复计算public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();}System.out.println(getmore(arr, 0, arr.length - 1, true));}public static int getmore(int[] arr, int left, int right, boolean flag) {// A拿,越多越好if (res[left][right] != 0)// 剪枝,遇到已经存在的值,则直接使用。动态规划的核心思想return res[left][right];if (left - right == 0)// 题目给出n是偶数,所以结束肯定最后一个是B拿,所以A没有了,返回0return 0;if (flag) {//A拿,肯定希望越多越好,所以max以后得到的分数return res[left][right] = Math.max(arr[left] + getmore(arr, left + 1, right, !flag),arr[right] + getmore(arr, left, right - 1, !flag));} else {//轮到B,B也是采取最优策略,所以B希望A后面拿到的分最少,返回的是剩下的min值return res[left][right] = Math.min(getmore(arr, left + 1, right, !flag),getmore(arr, left, right - 1, !flag));}}
}

运行结果:

一开始就直接递归搞起,提交运行超时 ,哈哈哈

试题 算法训练 逗志芃的危机 java实现相关推荐

  1. 蓝桥杯 试题 算法训练 逗志芃的危机

    逗志芃的危机 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数 ...

  2. 试题 算法训练 逗志芃的危机 (Java实现 通俗易懂)

    问题描述: 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从 ...

  3. 试题 算法训练 逗志芃的暴走 java实现

    问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼.因为逗志芃太逗了,所以这段时间妹子对逗志芃发动了技能无理取闹,妹子要去玩很多的景点.由于逗志芃之前抽机花费了太多的时间,不久以后又要微积分考试了 ...

  4. 试题 算法训练 逗志芃的危机

    在此记录一下学习大佬思路的题解吧 #include<iostream> using namespace std;const int N = 1010; int dp[N][N], a[N] ...

  5. 算法训练,逗志芃的暴走(Java代码)-蓝桥杯/leetcode

    蓝桥杯试题 算法训练 逗志芃的暴走(Java代码) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼.因为逗志芃太逗了,所以这段时间妹子对 ...

  6. 算法训练 逗志芃的危机

    算法训练 逗志芃的危机 1.题目 2.输入格式 3.输出格式 4.代码部分 5.测试数据 1.题目 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要 ...

  7. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  8. 试题 算法训练 逗志芃的暴走

    试题 算法训练 逗志芃的暴走 复习累了随便刷了道题,但没想到的是这道dfs有点坑... 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃是有妹子的现充,但是有时候妹子就是烦恼. ...

  9. 蓝桥杯算法训练-逗志芃的危机

    每日更新蓝桥杯题解, 有兴趣关注一波呀 文章目录 题目描述 题解 java代码 C++代码 题目描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一 ...

最新文章

  1. 关于学习Python的一点学习总结(35->关联超类)
  2. java网络编程udp_Java网络编程之UDP
  3. python中os.path和pathlib
  4. 根据语句自动生成正则表达式
  5. hdu 1712 ACboy needs your help
  6. android怎么看错误日志,android运行错误日志帮看下 不懂啊
  7. DBMS_SQL使用
  8. 人脸检测(六)--haar分类器代码理解
  9. Delphi 与 DirectX 之 DelphiX(15): TPictureCollectionItem.DrawWaveX、DrawWaveY ...
  10. Paxos算法在大型系统中常见的应用场景
  11. FlinkSQL快速入门
  12. python高阶爬虫---视频类内容爬取,内含详细教程和代码实例
  13. ios游戏和android,20款最受好评的iOS和Android游戏
  14. 内存取证-Volatility安装使用以及一些CTF比赛题目
  15. Intro to RL Lecture1
  16. 创蓝253短信验证码接口接入常见问题
  17. 文件如何自动上传到服务器,ftp如何自动上传文件到服务器
  18. 转载 | 身份访问与管理(IAM)的定义、应用与提供商
  19. 当前最为流行的可视化大屏都是怎么做的?
  20. python生兔子问题(递归算法)_兔子问题python解决方法

热门文章

  1. 00002 贪婪洞窟.003.6:怪物、宝箱和掉落
  2. vue + 签到日历
  3. 怎么看电脑安装python_查看电脑有没有安装Python的方法
  4. 天刀手游服务器注册不了,《天涯明月刀》手游连接服务器失败解决办法
  5. 飞思卡尔mc9s08烧录方法_(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程
  6. 【游戏设计模式】之二 论撤消重做、回放系统的优雅实现:命令模式
  7. php 判断 英文数字,php 判断中文,英文,数字
  8. 计算机配置管理模块mmc无法,SQL Server 2012配置管理器/MMC无法创建管理单元
  9. 1月29日服务器例行维护公告,7月29日服务器例行维护公告 升至1.1.7.5
  10. 龙晰操作系统安装CDH版本匹配问题解决