你正在数轴上跟小精灵对战。你拥有一个十分强力的技能称为移动射击,但是这个技能有一个缺点是在你发动之后只能改变一次方向。你可以认为你的位置在数字 0 的位置上,在数轴的正方向上有 n 只精灵,负方向上有 m 只精灵。移动射击可以造成 w 点伤害。每个精灵都有自己的血量,当血量降为 0 时死亡。在最开始时你可以选择向正方向或负方向释放移动射击,并且可以在任意时刻改变技能的方向。请问你最多可以击杀多少只小精灵 ?(n,m,w 以及精灵的血量均在[1, 100000] 范围内 )输入内容为五个,前三个为三个数字:正方向上的精灵个数 n、负方向上的精灵个数m,移动射击可以造成的伤害 w;第四个是一个长度为n的数组a,表示正方向上的n个精灵的血量;第五个是一个长度为m的数组b,表示负方向上的m个精灵的血量。输出一个数字,表示最多能够击杀的精灵数量。
先遍历数组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; 然后和当前最长的长度比较: 当index_a一直走到底,可返回ans。 因此: 输入:3 4 10 [1,2,3] [4, 3,2,1] 输出:4
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。