京东2017实习生笔试编程题-终结者C

注:题目和参考来自于赛码网。赛码网

终结者C

  • 题目描述
    收到情报,有批新造的机器人要运输到前线。小C将去破坏机器人的运输。小C将激光炮放置在公路的一旁,等运输车经过的时候发射(假设激光炮一定可以射穿车辆)。由于能源有限,激光炮只能发射两次。可以认为激光炮放在坐标轴的原点处,并向y轴正方向发射。每辆运输车可以看作是一个矩形,起始的x轴坐标为Xi ,所有的车均位于第一象限,长度为Li,速度为1,朝x轴负方向运动。即经过t时间后,该车车头的x坐标为Xi-t,车尾坐标为Xi-t+Li 。只要打中车的任何一个部分就算击中。
    请你算算,他在哪两个时刻发射,才能摧毁最多的运输车。
    如图

  • 输入
    第一行一个正整数 n ( 2≤N≤200 ),表示运输个的数量。
    接下来n行,每行两个整数X和L(1≤X、L≤109),表示一辆车的x轴坐标和长度。

  • 输出
    输出最多可以摧毁的运输车数量。
  • 样例输入
    4
    2 2
    3 1
    5 2
    7 3
  • 样例输出
    4
  • 时间限制
    C/C++语言:1000MS其它语言:3000MS
  • 内存限制
    C/C++语言:65536KB其它语言:589824KB

我的想法

首先,由于运输车的速度相同,所以他们的相对位置不变,要求在哪两个时刻发射,能摧毁最多的运输车,也就是哪两个时刻通过y轴的车的数量最多。但我们可以假定车不动,而是Y轴向右移动。
它这儿由于X、L较小,所以我觉得可以直接枚举所有的 两个时刻的组合,去求这些情况下,可以击中的运输车数。

代码如下:

//只枚举所有的位置作为激光炮的发射时刻 
#include<iostream>
using namespace std;
#define maxn 201
#define maxDistance 109
int main()
{
    int n,length;
    int a[maxn],b[maxn];    //a[],b[]分别对应车头、车尾的位置 
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值