永发信息网

pascal下落问题

答案:2  悬赏:60  手机版
解决时间 2021-05-08 02:14
  • 提问者网友:我是我
  • 2021-05-07 23:18

1.下落(fall)

[问题描述]

在直角坐标系上,有一个小球开始从坐标(x,y) x>0,y>0 处直线下落,每一秒钟一个单位距离,一直到X轴为止。然而,它可能在下落过程中碰到一些障碍物。障碍物可以看成是一些平行于X轴的水平线段,如果小球的Y坐标和障碍物的Y坐标相等,而X坐标在障碍物的两个端点X坐标之间(包括两个端点),这样小球就会延时5秒然后从障碍物的右端继续下落。

现给出小球的初始坐标 (x,y) ,以及每个障碍物的数据(三个整数 y x1 x2,分别表示这个障碍物的Y坐标,左、右端点的X坐标),编程求小球要几称钟才能到达X轴上。

[输入文件:fall.in]

第一行有两个整数x y表示小球初始坐标,1<=x,y<=1000。第二行有一个整数n(n<100),表示有n个障碍物。

下面有n行,每行三个整数(都在1到999之间),分别表示一个障碍物的数据(y x1 x2),其中x1<=x2。障碍物的高度都不相同。

[输出文件:fall.out]            

只一个整数,小球下落到X轴的秒数。

[样例:]

15 10

1

5 10  20

15 12

3

10 10 20

15 10 20

5 20 50

50 80

3

20 001 100

10 100 100

5 100 200

15

22

95

最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-05-08 00:55

var
 ans,x,y,i,j,k,m,n,t:longint;
 c,a,b:array[1..1000]of longint;


begin
 readln(x,y);
 readln(n);
 for i:=1 to n do readln(c[i],a[i],b[i]);


 for i:=1 to n do
  for j:=i+1 to n do
   if c[i]<c[j] then
    begin
    t:=a[i];a[i]:=a[j];a[j]:=t;
    t:=b[i];b[i]:=b[j];b[j]:=t;
    t:=c[i];c[i]:=c[j];c[j]:=t;
    end;i:=1;ans:=y;


 while y>0 do
  begin
   while c[i]>y do inc(i);
   if (c[i]=y)and(x in [a[i]..b[i]])then
    begin ans:=ans+5;x:=b[i];end;
   dec(y);
  end;
 writeln(ans);
end.

全部回答
  • 1楼网友:荒野風
  • 2021-05-08 01:36
什么意思啊?????
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯