@yexiaoqi
2022-06-02T17:11:43.000000Z
字数 765
阅读 451
刷题
华为机试
题目:绘图机器的绘图笔初始位置在原点(0,0),机器启动后按照以下规则来进行绘制直线
1. 尝试沿着横线坐标正向绘制直线直到给定的终点E
2. 期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。给定的横坐标终点值E 以及若干条绘制指令,请计算绘制的直线和横坐标轴以及x=E的直线组成的图形面积。
输入描述:
首行为两个整数 N 和 E,表示有N条指令,机器运行的横坐标终点值 E。接下来N行每行两个整数表示一条绘制指令 x offsetY。用例保证横坐标 x 以递增排序的方式出现,且不会出现相同横坐标 x。
取值范围:0 < N <= 10000, 0 < X <= E <= 20000, -10000 <= offsetY <= 10000
输出描述:
一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内
示例1:
输入:4 10
1 1
2 1
3 1
4 -2
输出:12
示例2:
输入:2 4
0 1
2 -2
输出:4
刚开始没明白,后来看到网友的图,计算的就是圈起来的范围
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int E = sc.nextInt();
int curX=0,curY=0,area=0;
for(int i=0; i<N; i++){
int x = sc.nextInt();
int y = sc.nextInt();
area += (x-curX)*Math.abs(curY);
curX = x;
curY += y;
}
//计算最后一个矩形的面积
if(curX < E){
area += (E-curX)*Math.abs(curY);
}
System.out.println(area);
}
}