各位高手帮忙啊,解题—
qbasic吧
全部回复
仅看楼主
level 4
qb新手 楼主
蚂蚁回家
一只蚂蚁迷了路,他要回家,他有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 7
这个是市里比赛的第四题
2010年12月16日 11点12分 2
level 1
[顶]
2010年12月19日 08点12分 3
level 1
我是楼主 帮我编一下 谢谢[Love]
2010年12月19日 08点12分 4
level 4
qb新手 楼主
[顶]
2010年12月19日 13点12分 5
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
level 1
没错!这确实是市赛的题目,你是哪个小学的,楼主?
2011年01月13日 13点01分 7
level 1
六楼好赞啊!我这个高一的菜鸟根本看不懂
2011年02月25日 11点02分 8
1