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分:能正确输出五组数据。
上一题
下一题