刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

连连看

编程实现:

现在有一个连连看游戏。场上有n张卡牌,每张卡牌上有一个分数,只要将两张卡牌连到一起,就会合成一张新的卡牌,卡牌上的分数为之前两张卡牌的分数之和,你将获得新卡牌分数的相应积分。经过多次操作后,最后只剩一张卡牌,游戏结束。给定初始每张卡牌的分数,请问最多能获得多少分?

例如:场上有3张卡牌,分数分别为10分、23分、5分,将10分卡牌与23分卡牌合成,可得到33分卡牌,再将33分卡牌与5分卡牌合成,可得到38分卡牌,获得总分数为33+38=71分为最多的分数。

输入描述

第一行输入一个正整数n,表示有n张卡牌(1≤n≤10000)。

第二行输入n个正整数,表示每张卡牌的初始分数(1≤分数≤10000),正整数之间由空格隔开。

输出描述

输出最多可以获得的分数。


输入样例

3
10 23 5

输出样例

71

使用微信搜索喵呜刷题,轻松应对考试!

答案:

br />71

解析:

【喵呜刷题小喵解析】
题目描述了一个连连看游戏,初始有n张卡牌,每张卡牌有一个分数。每次可以将两张卡牌合成一张新的卡牌,新卡牌的分数为之前两张卡牌的分数之和。经过多次操作后,最后只剩一张卡牌,游戏结束。需要求的是最多可以获得的分数。

解析这个问题的关键是理解合并卡牌的过程,并且找到一个最优的策略使得总分最大。从样例可以看出,应该每次都选择当前分数最大的两张卡牌进行合并,这样可以保证新生成的卡牌分数最大,从而最大化总分。

具体的算法可以如下:

1. 首先,对输入的n个分数进行排序,从小到大。
2. 然后,从排序后的列表的两端开始,每次取分数最大的两张卡牌进行合并,将它们的分数相加,然后将结果放回已排序的列表中。
3. 重复步骤2,直到列表中只剩下一张卡牌。
4. 最后,返回这张卡牌的分数,即为最多可以获得的分数。

对于输入样例,初始卡牌分数为[10, 23, 5]。排序后得到[5, 10, 23]。第一次合并10和23,得到33,放回列表得到[5, 33]。第二次合并5和33,得到38,放回列表得到[38]。因此,最多可以获得的分数为38。

但是,根据题目描述,应该是将10和23合并得到33,然后再将33和5合并得到38,所以正确的输出应该是71。因此,样例的输出有误,正确答案应该是71。
创作类型:
原创

本文链接:连连看 编程实现: 现在有一个连连看游戏。场上有n张卡牌,每张卡牌上有一个分数,只要将两张卡牌连到一

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share