主题:[原创]回字迷宫
输入N,得到一个回字矩阵,从(1,1)走到(N,N),判断有多少条合为素数的路线(只能向下或向右)。如输入5
则输出:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 3 2 1
1 1 1 1 1
16
程序如下:
CLS
INPUT N
P = (1 + N) * N / 2
DIM A(N, N), B(P)
FOR I = 1 TO N ‘回字矩阵
A = 1
FOR J = 1 TO N
PRINT A;
A(I, J) = A
IF I > J THEN A = A + 1
IF I + J > N THEN A = A - 1
NEXT J
PRINT
NEXT I
FOR I = N * 2 - 1 TO P ’求在回字阵里的路径和为素数的
B(I) = 1
FOR J = 2 TO INT(SQR(I))
IF I MOD J = 0 THEN B(I) = 0: EXIT FOR
NEXT J, I
I = 1 ‘入口
J = 1
GOSUB 100 ’递归调用
PRINT T
END ‘主程序结束
100
S = S + A(I, J) ’累加路径
IF I = N AND J = N THEN T = T + B(S) ‘判断是否为素数
J = J + 1 ’向右走
IF J <= N THEN GOSUB 100 ’是否是合法位
J = J - 1
I = I + 1 ‘向下走
IF I <= N THEN GOSUB 100 ’是否是合法位
I = I - 1
S = S - A(I, J) ‘多加了一个要减去
RETURN
[em2] [em2]
则输出:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 3 2 1
1 1 1 1 1
16
程序如下:
CLS
INPUT N
P = (1 + N) * N / 2
DIM A(N, N), B(P)
FOR I = 1 TO N ‘回字矩阵
A = 1
FOR J = 1 TO N
PRINT A;
A(I, J) = A
IF I > J THEN A = A + 1
IF I + J > N THEN A = A - 1
NEXT J
NEXT I
FOR I = N * 2 - 1 TO P ’求在回字阵里的路径和为素数的
B(I) = 1
FOR J = 2 TO INT(SQR(I))
IF I MOD J = 0 THEN B(I) = 0: EXIT FOR
NEXT J, I
I = 1 ‘入口
J = 1
GOSUB 100 ’递归调用
PRINT T
END ‘主程序结束
100
S = S + A(I, J) ’累加路径
IF I = N AND J = N THEN T = T + B(S) ‘判断是否为素数
J = J + 1 ’向右走
IF J <= N THEN GOSUB 100 ’是否是合法位
J = J - 1
I = I + 1 ‘向下走
IF I <= N THEN GOSUB 100 ’是否是合法位
I = I - 1
S = S - A(I, J) ‘多加了一个要减去
RETURN
[em2] [em2]