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