开发者社区> 问答> 正文

遇到一个移动射击的问题,求解答。

你正在数轴上跟小精灵对战。你拥有一个十分强力的技能称为移动射击,但是这个技能有一个缺点是在你发动之后只能改变一次方向。你可以认为你的位置在数字 0 的位置上,在数轴的正方向上有 n 只精灵,负方向上有 m 只精灵。移动射击可以造成 w 点伤害。每个精灵都有自己的血量,当血量降为 0 时死亡。在最开始时你可以选择向正方向或负方向释放移动射击,并且可以在任意时刻改变技能的方向。请问你最多可以击杀多少只小精灵 ?(n,m,w 以及精灵的血量均在[1, 100000] 范围内 )输入内容为五个,前三个为三个数字:正方向上的精灵个数 n、负方向上的精灵个数m,移动射击可以造成的伤害 w;第四个是一个长度为n的数组a,表示正方向上的n个精灵的血量;第五个是一个长度为m的数组b,表示负方向上的m个精灵的血量。输出一个数字,表示最多能够击杀的精灵数量。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 15:52:19 388 0
1 条回答
写回答
取消 提交回答
  • 先遍历数组a,a[i]表示数组a前i个数的和,当a[i]>=w的时候,记住此时的位置index_a=i,退出循环,退出后加上这句if(i==n||a[i]>w) index_a--;因为index_a指向的是刚好不超过 w 的位置,而且不能越界。对 b 数组也是如此,然后开始从 index_a 往后一步一步走 ;走一步,看看 b 数组的情况,k为 b数组的下标,初始 k=0; image.png 然后和当前最长的长度比较: image.png 当index_a一直走到底,可返回ans。 因此: 输入:3 4 10 [1,2,3] [4, 3,2,1] 输出:4

    2021-12-23 18:26:52
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
用自己的眼睛寻找个人成长之路 立即下载
数据如何让运动更好玩 立即下载
数据如何让运动更好玩有趣 立即下载