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

简答题

连连看

编程实现:

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

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

输入描述

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

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

输出描述

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


输入样例

3
10 23 5

输出样例

71

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

答案:

```pythondef max_score(cards):n = len(cards)if n == 1:return cards[0]if n == 2:return cards[0] + cards[1]max_score = cards[0] + cards[1]for i in range(2, n):max_score += max(cards[i-2], cards[i-1])return max_scoren = int(input())cards = list(map(int, input().split()))print(max_score(cards))```

解析:

【喵呜刷题小喵解析】:

这个问题是一个动态规划问题,我们可以使用动态规划来解决。

首先,我们定义一个函数`max_score`,它接受一个列表`cards`作为输入,表示卡牌的分数。

然后,我们根据卡牌的数量`n`来分情况讨论:

1. 如果`n`等于1,那么只有一张卡牌,直接返回这张卡牌的分数。
2. 如果`n`等于2,那么有两张卡牌,将这两张卡牌的分数相加即可。

对于`n`大于2的情况,我们使用一个循环来遍历卡牌列表,对于每张卡牌,我们选择与其相邻的前两张卡牌中的较大值进行相加,得到新的分数,并累加到`max_score`中。

最后,返回`max_score`即可。

在主程序中,我们首先从标准输入中读取卡牌的数量`n`和每张卡牌的分数,然后调用`max_score`函数计算最多可以获得的分数,并将结果输出到标准输出中。
创作类型:
原创

本文链接:连连看 编程实现: 现在有一个连连看卡牌游戏。有n张卡牌排列在一起,每张卡牌上有一个分数,只要将相邻

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

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

分享考题
share