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]))