首页 > 试题广场 >

Pokemon

[编程题]Pokemon
  • 热度指数:3988 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛是励志成为世界第一宝可梦大师的宝可梦训练家。现在他遇到了一个强劲的野生宝皮卡丘,野生宝皮卡丘的生命值是HP,攻击力是ACK,牛牛召唤的宝可梦是杰尼龟。杰尼龟的生命值是HP2,攻击力是ACK2,除此之外身为训练家还可以给宝可梦吃药让他满血复活(吃药发生在双方发动攻击之前,并且吃药一方不得在本回合发动攻击)。
牛牛想知道他最少多少回合才能能打败野生宝皮卡丘?
因为皮卡丘会电光一闪,所以皮卡丘总是比杰尼龟先发动攻击。若能成功击败野生皮卡丘则返回最少回合数,否则返回-1。
示例1

输入

8,3,8,1

输出

14

说明

至少需要14回合战胜野生皮卡丘
示例2

输入

1,1,1,1

输出

-1

说明

皮卡丘先出招就直接打死了杰尼龟,所以无法获胜

备注:
 
头像 呆喵挠琴
发表于 2021-09-05 23:41:56
思路: 题目的主要信息: 皮卡丘的生命值是HP,攻击力是ACK;杰尼龟的生命值是HP2,攻击力是ACK2。 杰尼龟在每回合开始前可以吃药满血复活,但吃药后不得在本回合发动攻击。 皮卡丘比杰尼龟先发动攻击。若能成功击败皮卡丘则返回最少回合数,否则返回-1。 方法一:暴力 首先解决一些特殊情况:a. 展开全文
头像 不会做题的小菜鸡
发表于 2021-08-21 20:13:17
思路 题目分析 题目给出我们皮卡丘和杰尼龟两方,都有HP值和ACK攻击值 每个回合允许双方攻击对方一次,其中杰尼龟可以选择将此回合的一次攻击换成回复满血量 每个回合必须皮卡丘先攻击 求最终杰尼龟是否能打败皮卡丘,并返回打败皮卡丘所用的回合数 最容易想到的方法一就是暴力推演整个攻击过程,用一 展开全文
头像 Tag_Kausal
发表于 2020-02-12 16:05:23
方法1:AC需要吃药的时候肯定是撑不住的那一回合,所以我们需要计算他需要吃多少次药,然后才能战胜野生皮卡丘,此题细节较多。特别需要注意杰尼龟可能第一回合打不过皮卡丘,或者杰尼龟可以直接打死皮卡丘的情况,杰尼龟在第二回合就被打死的情况。时间复杂度,空间复杂度。 class Solution { pub 展开全文
头像 摸鱼学大师
发表于 2021-08-04 23:08:13
思路: 题目的主要信息: 皮卡丘的生命和攻击力分别为HP与ACK,杰尼龟的生命与攻击力分别为HP2与ACK2,默认攻击一次对方生命值减去攻击力的数值 杰尼龟可以选择恢复全额生命到HP2,但是该轮不能攻击 每个回合皮卡丘优先攻击,如果杰尼龟处于不断复活的循环中则认定不能打败皮卡丘,返回-1 方法一 展开全文
头像 认认真真coding
发表于 2021-08-03 16:14:30
题目描述牛牛是励志成为世界第一宝可梦大师的宝可梦训练家。现在他遇到了一个强劲的野生宝皮卡丘,野生宝皮卡丘的生命值是HP,攻击力是ACK,牛牛召唤的宝可梦是杰尼龟。杰尼龟的生命值是HP2,攻击力是ACK2,除此之外身为训练家还可以给宝可梦吃药让他满血复活(吃药发生在双方发动攻击之前,并且吃药一方不得在 展开全文