首页 > 试题广场 >

天弃之子

[编程题]天弃之子
  • 热度指数:1966 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一款游戏,过关的方式是按按钮。
游戏一共有关,每一关有个按钮,其中只有唯一一个按钮是可以通关的,按下其他的按钮游戏就会失败。
好在这个游戏可以重来,而且由于设计者的疏忽,每一关的通关按钮是不变的,所以你可以记住前几关的按钮,重来时就可以直接通关。
但是...你的运气似乎用在了其他地方,你使用了最多的按按钮次数才成功通关。
求这个最多的按按钮次数吧!

本题为核心代码模式,代码框中预设代码已经指定好类名、方法名、参数名,请勿修改或重新命名,直接返回值即可。
示例1

输入

[1,1,4,5,1,4]

输出

49
示例2

输入

[2,2,2]

输出

9

说明

第一关消耗两次得到通关按钮后直接进入第二关,经历一次失败后重新来到第二关得到通关按钮进入第三关,再失败一次后直接通关,消耗次数为1+2+3+3=9

备注:
输入一维数组,表示每一关的按钮数


头像 梧桐梧桐
发表于 2022-03-09 22:29:22
设行号为i,每一行的按键数f(i)为从上一行正确的按钮已经按下开始,直到按下这一行的正确按钮,每一行的要按下正确的按钮,所需要的按键数f(i) = 1 + (a[i] - 1) * (i + 1),加起来就是结果。 我们要算第三行需要按键数时,首先第一个按钮只需要按一次,右边的按钮每个都需要第一行 展开全文