解题思路:

注意事项:每行指令都是从新回到原点再走的

参考代码:

#判断每走一步的结果
def check(x,y,lab):
    if x>=len(lab) or x<0 or y>=len(lab[0]) or y<0:
        print('I am out!')
        return False
    elif lab[x][y]=='.' or lab[x][y]=='S':
        return True
    elif lab[x][y]=='#':
        print('I am dizzy!')
        return False
    elif lab[x][y]=='T':
        print('I get there!')
        return False

#测试样例数
T=int(input())
for _ in range(T):
    #迷宫规模
    N=int(input().strip())
    #迷宫
    lab=[list(input().strip()) for _ in range(N)]
    #指令数
    Q=int(input().strip())
    a,b=-1,-1
    for i in range(len(lab)):
        if 'S' in  lab[i]:
            a_temp,b_temp=i,lab[i].index('S')
     #指令
    ins=[list(input().strip()) for _ in range(Q)]
    for j in range(len(ins)):
        a,b=a_temp,b_temp
        for k in range(len(ins[j])):
            if ins[j][k]=='D':
                a+=1
                if not check(a,b,lab):
                    break
                
            if ins[j][k]=='U':
                a-=1
                if not check(a,b,lab):
                    break
                
            if ins[j][k]=='R':
                b+=1
                if not check(a,b,lab):
                    break
                
            if ins[j][k]=='L':
                b-=1
                if not check(a,b,lab):
                    break
            if lab[a][b]!='T'and k==len(ins[j])-1:
                print('I have no idea!')


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论