回 帖 发 新 帖 刷新版面

主题:编上下车问题,急!

火车从第一站开出,始发站上车的人数为A;然后到达第二站,在第二站有人上、下车,但上、下车的人数相同。从第三站起,上、下车的人数有一定的规律:上车人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点的前一站(N-1站),都满足次规律。现给出的条件是:共有N个车站,始发站上车的人数为A,最后一站下车的人数是M(全部下车)。请编程求出从X站开出时车上的人数是多少?输入为:A,N,M和X(N,X均小于23);输出为:X站开出时车上的人数

回复列表 (共7个回复)

沙发

下午要考试,有可能着就是考试题,大家帮帮忙,看在我一字一句把这个程序打出来付出了多少劳动。

板凳

CLS
INPUT A: INPUT N: INPUT M: INPUT X
DIM A(N), B(N), X(N)
A(1) = A: B(1) = 0: X(2) = A: X(1) = A
DO
S = S + 1
A(2) = S: B(2) = 2
FOR I = 3 TO N - 1
A(I) = A(I - 1) + A(I - 2)
B(I) = A(I - 1)
X(I) = X(I - 1) + A(I) - B(I)
NEXT I
IF X(N - 1) = M THEN PRINT X(X): END
LOOP
END
附录:调试数据[5,7,32,4→13     0,10,40,6→8      10,15,2378,8→138]

3 楼

楼上的,对不起,你的程序是死循环

4 楼

[em9][em9][em12][em13][em13][em18]
CLS
INPUT A: INPUT N: INPUT M: INPUT X
DIM A(N), B(N), X(N)
A(1) = A: B(1) = 0: X(2) = A: X(1) = A
DO
S = S + 1
A(2) = S: B(2) = 2
FOR I = 3 TO N - 1
A(I) = A(I - 1) + A(I - 2)
B(I) = A(I - 1)
X(I) = X(I - 1) + A(I) - B(I)
NEXT I
IF X(N - 1) = M THEN PRINT X(X): END
LOOP
END

5 楼

谢谢谢谢,原来的数据我输入错了

6 楼

先讲一下算法:
(至少有三个车站)设第二站上车的人数为F(下车人数也为F),则每站开出后的人数:

站数      1      2       3       4      5      6     ……    N
上车人数  A      F      A+F     A+2F  2A+3F  3A+5F   ……    0
下车人数  0      F       F      A+F    A+2F  2A+3F   ……    M
总人数    A      A       2A     2A+F  3A+2F  4A+4F   ……    0

可以看出,每一站开出后车上总人数等于该站上车人数加一个A再减一个F。
那么,上车人数又怎么求呢?
设某站上车人数等于SA+TF,把所有S和T的值列出来:

站数  1  2  3  4  5  6   ……   
S     1  0  1  1  2  3   ……
T     0  1  1  2  3  5   ……   

可得出S(1)=1,S(2)=0,T(1)=0,之后S(I)=S(I-1)+S(I-2),T(I)=S(I+1),T(N-1)=T(N-2)+T(N-3)
可求出F的值:(M-(S(N-1)+1)*A)/(T(N-1)-1)
第X站时车上的人数:(S(X)+1)*A+(T(X)-1)*F

7 楼

程序:
CLS
INPUT a,n,m,x
DIM s(n-1),t(n-1)
s(1)=1:s(2)=0:t(1)=0
FOR i=3 TO n-1
    s(i)=s(i-1)+s(i-2)
    t(i-1)=s(i)
NEXT i
IF n=3 THEN
   t(2)=1
ELSE
   t(n-1)=t(n-2)+t(n-3)
END IF
s=s(n-1)+1:t=t(n-1)-1
f=(m-s*a)/t
IF x=1 THEN
   PRINT a
ELSE
   PRINT (s(x)+1)*a+(t(x)-1)*f
END IF
END

我来回复

您尚未登录,请登录后再回复。点此登录或注册