level 4
蚂蚁回家
一只蚂蚁迷了路,他要回家,他有6点HP,在一张地图上,地图分为一个个格子,蚂蚁一秒可走一格,走一格需花费1点HP。地图上有5种格子:
0 空地
1 障碍,蚂蚁不可走或跳
2 蚂蚁,他也是空地
3 带有食品的格子(蚂蚁走到这不需任何时间便可补满HP,且食物永远吃不完)
4 蚂蚁窝,蚂蚁走到这便完成任务
注意:
当蚂蚁的HP降到0,他将死去,这时即使他在蚂蚁窝或食物上,他也不能算完成任务或进食补满HP
【输入】
地图的大小,如 3,3
地图的信息 如
2 0 1
0 0 3
1 1 4
【输出】
如果蚂蚁可以回家,则输出他最短需要多少时间,上面的输入应输出 4
如果蚂蚁无法回家,则输出死亡讯息“DEATH”
2010年12月15日 13点12分
1
level 5
代码看起来有点头晕,还好运行结果还算正确,附两个地图信息
CLS
OPEN "mayi.in" FOR INPUT AS #1
OPEN "mayi.out" FOR OUTPUT AS #2
INPUT #1, a, b
DIM w(a + 1, b + 1)
DIM s(a, b)
x = 1: y = 1
FOR i = 1 TO a
FOR j = 1 TO b
w(i, j) = 1
INPUT #1, s(i, j)
NEXT j, i
w(a, b) = 3
start:
IF w(x + 1, y) = 1 OR w(x + 1, y) = 3 THEN
w(x, y) = 2: x = x + 1
ELSE
IF w(x, y + 1) = 1 OR w(x, y + 1) = 3 THEN w(x, y) = 2: y = y + 1
END IF
IF x = a AND y = b THEN
m = 0
n = 0
l = 6
FOR i = 1 TO a
FOR j = 1 TO b
IF w(i, j) = 2 OR w(i, j) = 3 THEN
IF s(i, j) = 1 THEN
l = 0
EXIT FOR
ELSE
l = l - 1
n = n + 1
IF l = 0 THEN EXIT FOR
IF s(i, j) = 3 AND l <> 0 THEN l = 6
END IF
END IF
NEXT j
IF l = 0 THEN EXIT FOR
NEXT i
IF s = 0 AND l <> 0 THEN s = n - 1
IF s > n - 1 AND l <> 0 THEN s = n - 1
DO
IF w(x - 1, y) = 2 THEN
x = x - 1
ELSE
IF w(x, y - 1) = 2 THEN
y = y - 1
ELSE
IF s = 0 THEN
PRINT
#2, "DEATH": CLOSE #
1, #2: END
ELSE
PRINT #2, s: END
END IF
END IF
END IF
LOOP UNTIL w(x + 1, y) = 1 OR w(x, y + 1) = 1
w(x + 1, y) = 0
FOR i = x + 1 TO a
FOR j = y + 1 TO b
w(i, j) = 1
NEXT j, i
w(a, b) = 3
GOTO start
ELSE
GOTO start
END IF
下面的地图(mayi.in),用来测试食物的作用
5,4
2 0 0 1 1
0 3 0 0 1
0 0 1 0 0
1 0 0 0 4
输出 “7”
5,4
2 3 0 1 1
0 0 0 0 1
0 0 1 0 0
1 0 0 0 4
输出“DEATH”
2010年12月26日 12点12分
6