XMUOJ·纸片选择
纸片选择
题目描述
题目分析
解决方案
题目描述
厦门大学最近很流行一种游戏:将2n张纸片依次进行排序,每张纸片上都写着一个价值a[i]。双方进行轮流操作,每次操作可以从首部或尾部拿走一张纸片并获得纸片上的价值,纸片不再放回,纸片取完后获得价值多的一方获胜。现在你是先手,你很明白你的对手足够聪明,请问你在最坏情况下最多可以获得多少的价值。
出题者:秦豪远同学
输入
第一行包含一个整数n(n<=6)
接下来一行,一共2n个数字,代表每张纸片上的价值a[i](0<=a[i]<=100)
输出
输出一个整数,代表你最多可以获得的价值。
输入样例:
3
4 3 8 9 1 5
输出样例:
17
题目分析:
思路:该问题需要考虑全局的变化情况,这里选择递归算法choose(int num[],int len),返回值即是每个num[]所求最大值。
(1)函数每次传递的参数是剩下的牌组成的数组及其牌数,每一轮递归两人各完成一次选择。
(2)递归出口是剩下两张牌,返回较大的数值即可
(2)对于给定的2n张牌,自己优先选择有两种情况:choose->L和choose->R,表示自己选择完之后能从剩下的牌中获得的最大值。然后对手选择再分两种情况,一共就有四种情况,分别是①choose->L->L、②choose->L->R、③choose->R->L、④choose->R->R,表示一轮选择之后自己能从剩下的牌中获得的最大值。按照题目要求,需要在自己选牌的时候考虑最好情况,对方选牌考虑最坏的情况。例如自己的选择choose->L,那么共有①和②两种情况,由于是对手选择后产生的,所以考虑最坏情况,即choose->L=min(choose->L->L,choose->L->R)。若是choose->R,有③和④,同理考虑最坏情况,即choose->R=min(choose->R->L,choose->R->R)。这样就剩下两种情况,由于这两种情况是自己选择产生的,于是考虑最好情况,choose=max(choose->L+num[L],choose->R+num[R]),即是以下程序中的:
max(
num[0] + min( choose(num+2,len-2) , choose(num+1,len-2) ),
num[len-1] + min( choose(num,len-2) , choose(num+1,len-2) )
)
解决方案:
#include <iostream>
using namespace std;
int choose(int num[],int len){if(len==2)return max(num[0],num[1]);return max(num[0]+min(choose(num+2,len-2),choose(num+1,len-2)),num[len-1]+min(choose(num,len-2),choose(num+1,len-2)));
}
int main(){int n;cin>>n;int num[2*n];for(int i=0;i<2*n;i++)cin>>num[i];cout<<choose(num,2*n);return 0;
}
XMUOJ·纸片选择相关推荐
- Oracle调优总结--1(经典实践 重要)
Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...
- 纸片人「活」了。Meta AI新作:只需几分钟,手绘小人有了灵魂
想让画中的「纸片人」有生命,Meta AI来搞定!昨日,Meta AI宣布了一种独创性方法,只需几分钟,就能动画化儿童手绘的角色,效果拔群. 快看,「纸片人」居然自己跳出来了! 小猫学会了hiphop ...
- Unity 粒子制作简单飞舞纸片特效
首先在3dmax里做一个很简单的纸片,并直接贴上带有高光和颜色的材质. 纸片在空中飞舞时会"自转",所以在max里面先做一个简单的旋转动画,并在Renderer Setup中将其序 ...
- xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码
目录 前言 xmuoj对应链接 Pycharm安装 代码 001 输出第二个整数 002 字符菱形 003 打印ASCII码 004 打印字符 005 整型数据类型存储空间大小 006 浮点型数据类型 ...
- 当网红本人成为网红毒瘤:Vtuber的纸片人模式能够破解困局吗?
随着直播产业走出膨胀期,2018年也成了直播网红逐一崩塌的一年. 在中国有陈一发儿.莉哥等人因触碰政治红线而被封禁.在美国,YouTube上"一哥"pewdiepie也不太平,频繁 ...
- 自己造个真正意义上的AI纸片人离我们还有多远?
自己造个真正意义上的AI纸片人离我们还有多远? 我一直想自己"造"个可以像个人一样跟我聊天,当我想操作电脑或手机或玩游戏时,只要跟ta说,ta都能为我操作,还帮我玩游戏挂机--的纸 ...
- 龙珠头/小怪兽/纸片少女都是怎么弄的?
先别说你早就知道了,肯定还是很多粉丝不知道的! 比如小怪兽这个阿虚也是最近才知道的 ▍1 龙珠头 之前阿虚学穿搭的时候- 经常能看到这种图: 又帅又可以不露脸? 那可不就三个字:好.顶.赞 而且不少穿 ...
- switch好玩吗_Switch今年上半年游戏汇总 原来有这么多选择
期待已久的任天堂Switch马上就将在本周五正式出货了.虽说我们更多去谈论着关于这台主机的种种,但当真正拿到机器时,其实对咱们玩家最重要的还是能否找到自己认为好玩的东西.所以,小编特意将今年上半年的S ...
- 利率选择第三部分 理财方案量身定做 12.帮孩子理财从打理压岁钱开始
在改章节中,我们主要介绍利率选择的内容,自我感觉有个不错的提议和大家分享下 都说如今过年是大人愁,孩子乐,因为春节之际大人不免要有一笔不菲的花费,但对于孩子来说,除了好吃好穿之外,按中华民族的传统习俗 ...
最新文章
- 100道 Dubbo面试题及答案(2021最新)
- hive to mysql_Hive And MySQL安装及设置
- HDU5762(暴力)
- oracle去掉blob的黑边,oracle Blob处理
- 元宇宙深度研究报告:元宇宙是互联网的终极形态?
- vb 用代码添加控件
- C#并发编程之初识并行编程
- Git理论、原理、操作
- java 资深工程师必备技能
- js 确定主窗体是否存在
- scan——Theano中循环的实现
- gitlab git 安装
- sdut 2878 圆圈
- Bootstrap Timepicker
- 主力移仓与跨期套利(转)
- Verilog 代码编写 DDS信号发生器(幅频相可调正弦波、方波、三角波、锯齿波)纯VIVADO编写仿真
- 新锐任务宝推广渠道推荐
- 【数据分析】搜索和非结构化数据分析值得关注的5大趋势
- 计算机从bios到操作系统,高手进!!计算机开机后在进入操作系统前BIOS在进行什么检测工作?...
- FM FFM:深入理解FM与FFM