贪吃蛇
标题:贪吃蛇 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。
下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == 'H',表示该方格为贪吃蛇的起始位置;若arr[i][j] == 'F',表示该方格为食物,若arr[i][j] == 'E',表示该方格为空格。
下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == 'H',表示该方格为贪吃蛇的起始位置;若arr[i][j] == 'F',表示该方格为食物,若arr[i][j] == 'E',表示该方格为空格。
贪吃蛇初始长度为1,初始移动方向为向左。为给定一系列贪吃蛇的移动操作,返回操作后蛇的长度,如果在操作执行完之前已经游戏结束,返回游戏结束时蛇的长度。
while True:
try:
orders = input().split()
n, m = map(int, input().split())
if n == 0&nbs***bsp;m == 0:
print(0)
continue
grid = [input().split() for _ in range(n)]
x, y = 0, 0
for i in range(n):
for j in range(m):
if grid[i][j] == "H":
x, y = i, j
break
res, command = 1, "L"
for order in orders:
ref = {"U": [-1, 0], "D": [1, 0], "L": [0, -1], "R": [0, 1]}
if order == "G":
if command in ref:
dx, dy = ref[command]
x, y = x + dx, y + dy
if x < 0&nbs***bsp;x >= n&nbs***bsp;y < 0&nbs***bsp;y >= m&nbs***bsp;grid[x][y] == "S":
break
if grid[x][y] == "F":
res += 1
grid[x][y] = "S"
else:
command = order
print(res)
except:
break
腾讯成长空间 5958人发布