回 帖 发 新 帖 刷新版面

主题:联赛试题

设有一个N*M(l<=N<=50,l<=M<=50)的街道(如图一):(40%)
      北    
  5┌─┬─┬─┬─┬─┬─┬─┬─┐B(9,5)
    │  │  │  │  │  │  │  │  │
  4├─┼─┼─┼─┼─┼─┼─┼─┤
    │  │*│*│*│*│*│*│  │   东
西3├─┼─┼─┼─┼─┼─┼─┼─┤
    │  │*│*│*│*│*│*│  │
  2├─┼─┼─┼─┼─┼─┼─┼─┤
    │  │  │  │  │  │  │  │  │
  1└─┴─┴─┴─┴─┴─┴─┴─┘
  1 2 3 4 5 6 7 8 9
 A(1,1)       南
         (图一)

规定行人从A(1,1)出发,在街道上只能向东或北方向行走。
图二为N=3,M=3的街道图,从A出发到达B共有6条可供行走的路径:

1.  A-A1-A2-A5-B
2.  A-A1-A4-A5-B
3.  A-A1-A4-A7-B
4.  A-A3-A4-A5-B
5.  A-A3-A4-A7-B
6.  A-A3-A6-A7-B

   若在N*M的街道中,设置一个矩形障碍区域(包括围住该区域的的街道)不让行人通
行,如图一中用“*”表示的部分。
    此矩形障碍区域用2对顶点坐标给出,图一中的2对顶点坐标为:(2,2),(8,4),此时从
A出发到达B的路径仅有两条。
程序要求
任务一:给出N,M后,求出所有从A出发到达B的路径的条数。
任务二:给出N,M,同时再给出此街道中的矩形障碍区域的2对顶点坐标(X1,y1),
       (X2,Y2),然后求出此种情况下所有从A出发到达B的路径的条数。

回复列表 (共2个回复)

沙发

CLS
DIM G(50, 50), F$(50, 50)
DIM A(10000), B(10000), C(10000)
INPUT "1<=N<=50,1<=M<=50"; N, M
INPUT "输入两点坐标"; X1, Y1, X2, Y2
FOR I = X1 TO X2: FOR J = Y1 TO Y2
G(I, J) = 1
NEXT J, I: F$(1, 1) = "1"
FOR I = 2 TO M
IF G(I, 1) = 0 THEN F$(I, 1) = F$(I - 1, 1)
NEXT I
FOR I = 2 TO N
IF G(1, I) = 0 THEN F$(1, I) = F$(1, I - 1)
NEXT I
FOR I = 2 TO M
FOR J = 2 TO N
IF G(I, J) = 0 THEN
LA = LEN(F$(I - 1, J)): LB = LEN(F$(I, J - 1)): X = LA: H = 0: F$(I, J) = ""
IF LB > LA THEN X = LB
FOR K = 1 TO LA: A(K) = VAL(MID$(F$(I - 1, J), LA + 1 - K, 1)): NEXT K
FOR K = 1 TO LB: B(K) = VAL(MID$(F$(I, J - 1), LB + 1 - K, 1)): NEXT K
FOR K = 1 TO X: S = A(K) + B(K) + H: C(K) = S MOD 10: H = S \ 10: NEXT K
IF H <> 0 THEN X = X + 1: C(X) = H
FOR K = 1 TO X: F$(I, J) = LTRIM$(STR$(C(K))) + F$(I, J): C(K) = 0: A(K) = 0: B(K) = 0: NEXT K
END IF
NEXT J, I
PRINT F$(M, N)
END
这是高精度,快给我加分
你的同学-CHYX

板凳

CLS
INPUT n, m, x1, y1, x2, y2
DIM a(n, m), b(n, m)
FOR i = x1 TO x2: FOR j = y1 TO y2: b(n, m) = 1: NEXT j, i
FOR i = 1 TO n
    FOR j = 1 TO m
        IF i = 1 OR j = 1 THEN
           a(i, j) = 1
        ELSE
           a(i, j) = a(i - 1, j) + a(i, j - 1)
        END IF
NEXT j, i
PRINT a(n, m)
END

我来回复

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