一道机试题 求解

前几天的华为od机试题,我感觉蛮难的,做下来只有30% ac,求解

1.     绘制机器的绘笔初始位置在原点(0,0),机器启动后其绘图笔按下面规则绘制直线:

1) 尝试沿着横向正坐标轴绘制直线,直到给定的终点E

2) 期间可以通过指令在纵坐标轴方向进行偏移,并同时绘制直线,偏移后按规则1绘制直线;指令的格式为X offsetY,表示在横坐标轴X沿纵坐标方向偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。

给定了横坐标终点值E,以及若干条绘制指令,请计算绘制的直线和横坐标轴以及X=E的直线组成图形的面积。

输入描述:

首行为两个整数N E,表示有N条指令,机器运行的横坐标终点值E

接下来N行,每行两个整数表示一条绘制指令X offsetY,用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标X

取值范围:0<n<=10000, 0<=X<=E<=20000-10000<=offset<=10000

输出面积。

示例:

输入; 4 10                                                       

1 1

2 1

3 1

4 -2                                                  

输出;12   


#面经##社招##华为#
全部评论
    public static void main(String[] args) {         Scanner in = new Scanner(System.in);         String[] split = in.nextLine().split(" ");         int N = Integer.parseInt(split[0]);         int E = Integer.parseInt(split[1]);         int curX = 0, curY = 0, area = 0;         for (int i = 0; i < N; i++) {             String[] strs = in.nextLine().split(" ");             int x = Integer.parseInt(strs[0]);             int y = Integer.parseInt(strs[1]);             area += (x - curX) * Math.abs(curY);             curX = x;             curY += y;         }         if (curX < E) {             area += (E - curX) * Math.abs(curY);         }         System.out.println(area);         in.close();     }
2 回复 分享
发布于 2021-08-26 10:03
M
点赞 回复 分享
发布于 2021-08-25 22:29

相关推荐

仁者伍敌:服务员还要脱颖而出,这是五星级酒店吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务