问题描述:
  逗志芃又一次面临了危机。逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了。现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从最前面或者最后面取走一个数,全部取完则游戏结束,之后每个人取走的数的和就是每个人的得分。由于逗志芃妹子很厉害,但他又不想输,所以只能找到你了,你要告诉他最多可以得到多少分。(注意,妹子智商是maxlongint所以是不会犯错的,每次的策略必然最优,而且逗志芃是先手)
  
输入格式
  第一行一个数n,表示有n个数。
  第二行就是进行游戏的n个数。
  
输出格式
  一个数,最高得分
  
样例输入
2
10 20

样例输出
20

数据规模和约定
  例:0<n,m<=1000,每个数不超过10000 。

思路:
本题跟0-1背包很相似,0-1背包的每一次时取或者不取,而本题的每一次取最前面或者最后面的数字。逗志芃取的时候,选择能取得更多的情况,妹妹取的时候,会让他选择取得更少的情况。用step控制取的轮次,step为单数时,轮到逗志芃,为双数时,妹妹取。

完整代码:

import java.util.Scanner;
public class Main {static int[] nums;static int[][] res = new int[1000][1000];   // res[i][j]表示i到j区间能取到的最大值public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();      //  当第一行为数字,第二行为字符串时,要用sc.nextLine来消除回车带来的影响String str = sc.nextLine(); //  获取第二行的字符String[] temp = str.trim().split(" ");nums = new int[n];for (int i=0;i<n;i++){nums[i] = Integer.parseInt(temp[i]);}System.out.println(solve(0,n-1,1));}/*** @param start 前面的指针* @param end   后面的指针* @param step  表示进行到第几步了* @return*/private static int solve(int start, int end, int step){if (res[start][end]!=0)     //  当res[i][j]存在时,直接返回    剪枝,避免超时return res[start][end];if (start==end)     //  当只有一个数时,一定是妹妹取,返回0return 0;if (step%2==1){ //  步数为奇数时,逗志凡取,返回后面能取得较多的情况return res[start][end] = Math.max((nums[start]+solve(start+1,end,step+1)),nums[end]+solve(start,end-1,step+1));}else { //  步数为偶数时,妹妹取,返回后面能取得较少的情况return res[start][end] = Math.min(solve(start+1,end,step+1),solve(start,end-1,step+1));}}
}

试题 算法训练 逗志芃的危机 (Java实现 通俗易懂)相关推荐

  1. 试题 算法训练 逗志芃的危机 java实现

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

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

    逗志芃的危机 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有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. ​不唯SCI,博士生要怎么培养?当我们反对SCI至上时,我们到底在反对什么?...
  2. linux mysql 5.7 配置_linux下mysql5.7的安装配置
  3. pixhawk commander--navigator--modules之间的联系
  4. NioEventLoop 的实例化过程
  5. Web前端开发笔记——第三章 CSS语言 第五节 盒子模型
  6. FiddlerScript-常用总结
  7. [vscode] 使用正则表达式进行搜索
  8. NLP—6.数据不平衡处理
  9. 【linux】Redhat 7 更新 yum源
  10. jar类型文件图标不显示_显示的JAR文件
  11. Global Mapper24.0汉化中文版下载安装教程
  12. 传智播客微金所项目实战移动web开发
  13. 百度云盘archlinux manjaro直接安装
  14. 拉格朗日插值的优缺点_拉格朗日插值的优缺点_拉格朗日插值法与牛顿插值法的比较...
  15. python【一行代码】生成个性二维码
  16. 微信公众号 - 网页服务 - 分享接口
  17. 订单退款与退款失败任务重试
  18. 新手如何运营推广微信公众号
  19. 温伯格:量子力学的困境
  20. 哨兵-1 Sentinel-1数据下载(ASF)

热门文章

  1. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置
  2. 国密算法的EKEY的使用
  3. 探索移动端音视频与GSYVideoPlayer之旅 | Agora Talk
  4. 如何写好科研论文笔记 李玉军 清华大学 学堂在线课程
  5. 总结哪些因素影响谷歌排名
  6. 调用bing图片html代码,网站背景调用必应Bing每日图片教程附接口
  7. 使用高德地图2D/3D SDK添加海量描点Marker以及视图中显示所有描点、我的定位添加呼吸动画
  8. Adobe Dreamweaver 的基础知识
  9. 《神经网络与深度学习》nndl读书笔记
  10. 今日头条李航:深度学习NLP的现有优势与未来挑战