测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25741. 编程实现:小明去游乐场玩飞镖扎气球的游戏,一共有n个气球,依次排成一行,每个气球上有一个数字,表示这个气球的分值。游戏计分规则:1、戳破1个气球,将获得其本身及左右相邻气球,共三个分值相乘的分数;2、如果戳破的气球左边或右边没有气球,则获得其本身及相邻气球,共两个分值相乘的分数;如果被戳破的气球左边和右边都没有气球(是最后一个被戳破的气球),则这个气球本身的分值作为分数。3、已经被戳破的气球不再…

填空题 较易

题目描述

编程实现:

小明去游乐场玩飞镖扎气球的游戏,一共有n个气球,依次排成一行,每个气球上有一个数字,表示这个气球的分值。

游戏计分规则:

1、戳破1个气球,将获得其本身及左右相邻气球,共三个分值相乘的分数;

2、如果戳破的气球左边或右边没有气球,则获得其本身及相邻气球,共两个分值相乘的分数;如果被戳破的气球左边和右边都没有气球(是最后一个被戳破的气球),则这个气球本身的分值作为分数。

3、已经被戳破的气球不再计算。

飞镖数量不限,可以任意选择顺序戳破气球,根据计分规则,争取使得游戏最后得分最高。

例如:一共有3个气球,分值分别为2,4,6。

若想获得最高得分:

1)先戳破4,得分为2X4X6=48;

2)再戳破2,得分为2X6=12,累计得分60;

3)再戳破6,得分为6,累计得分66;

最后总得分为66,为最高得分。

输入描述:

输入n个正整数,表示气球的分值,且正整数之间以一个英文逗号隔开

输出描述:

输出正整数,表示戳破所有气球后获得的最高分数

样例输入:

2,4,6

样例输出:

66

参考答案

#参考答案1 a=input().split(',') b=0 c=0 for i in range(len(a)): if len(a)>=3: for i in range(1,len(a)-1): e=int(a[i-1])*int(a[i])*int(a[i+1]) b=0 if e>b: b=e c+=b a.pop(i) continue if len(a)==2: c+=int(a[0])*int(a[1]) if int(a[0])>=int(a[1]): a.pop(1) else: a.pop(0) continue if len(a)==1: c+=int(a[0]) a.pop(0) print(c) #参考答案2 num=str(input()) numlist=[] score=0 for i in num.split(','): numlist.append(int(i)) numlist.sort(reverse=True) while len(numlist)>=3: score+=numlist[1]*numlist[0]*numlist[2] numlist.remove(numlist[1]) score+=numlist[1]*numlist[0]+numlist[0] print(score)

答案解析

评分标准:

7分:能正确输出一组数据;

7分:能正确输出两组数据;

7分:能正确输出三组数据;

7分:能正确输出四组数据;

7分:能正确输出五组数据。

上一题 下一题