0427阿里笔试

发下第一题,第一题跑通过就快到时间了,第二题感觉有思路但是没时间写了,还是写的少
不知道是不是好的方法,但是能过
import sys
def f(s,start_x,start_y,n):
    s[start_x][start_y] = '6'
    change = ['6','5','4','2','3','1']
    while(True):
        if start_x>0 and s[start_x-1][start_y]=='#':
            start_x = start_x - 1
            s[start_x][start_y] = change[2]
            change[2] = change[5]
            change[5] = change[4]
            change[4] = change[0]
            change[0] = s[start_x][start_y]
        elif start_y>0 and s[start_x][start_y-1]=='#':
            start_y = start_y - 1
            s[start_x][start_y] = change[1]
            change[1] = change[5]
            change[5] = change[3]
            change[3] = change[0]
            change[0] = s[start_x][start_y]
        elif start_y < n-1 and s[start_x][start_y + 1] == '#':
            start_y = start_y + 1
            s[start_x][start_y] = change[3]
            change[3] = change[5]
            change[5] = change[1]
            change[1] = change[0]
            change[0] = s[start_x][start_y]
        elif start_x < n - 1 and s[start_x + 1][start_y] == '#':
            start_x = start_x + 1
            s[start_x][start_y] = change[4]
            change[4] = change[5]
            change[5] = change[2]
            change[2] = change[0]
            change[0] = s[start_x][start_y]
        elif start_x > 0 and s[start_x - 1][start_y] == 'E':
            s[start_x - 1][start_y] = change[2]
            break
        elif start_y > 0 and s[start_x][start_y - 1] == 'E':
            s[start_x][start_y-1] = change[1]
            break
        elif start_x < n - 1 and s[start_x + 1][start_y] == 'E':
            s[start_x + 1][start_y] = change[4]
            break
        elif start_y < n - 1 and s[start_x][start_y + 1] == 'E':
            s[start_x][start_y + 1] = change[3]
            break
    return s


if __name__ == "__main__":
    t = int(sys.stdin.readline().strip())
    ans = 0
    for i in range(t):
        n = int(sys.stdin.readline().strip())
        s = []
        for j in range(n):
            line = sys.stdin.readline().strip()
            #print(line)
            s.append(list(line))
            if 'S' in line:
                start_x=j
                start_y=s[j].index('S')
        result = f(s,start_x,start_y,n)
        for i in range(n):
            print(''.join(result[i]))



#阿里巴巴##笔试题目#
全部评论
dalao可以写下题目吗,没有参加这一场,但想看下题目
点赞 回复
分享
发布于 2020-05-01 19:21

相关推荐

投递腾讯等公司8个岗位
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务