题目描述
有一只地鼠不小心跑进了一个m*n的矩形田地里,假设地鼠在这块田地的初始位置为(x,y),并且每次只能向相邻的上下左右四个方向移动一步,那么在最多移动K次的情况下,有多少条路径可以逃出这片田地(一旦出去田地的边界就不能再往回走)?
下面是样例示意图:
输入描述:
输入数据包括五个参数:m,n,x,y,K 其中m和n的范围均为是[1,10],K的范围是[0,10]。 0<=x<m,0<=y<n。
输出描述:
输出成功逃跑的路径数量。
示例1
输入 | 输出 |
2 3 0 1 2 | 6 |
动态规划:
代码:
m = int(input())
n = int(input())
x = int(input())
y = int(input())
K = int(input())
dp = [[[0 for i in range(K)]for j in range(n)]for k in range(m)]
for k in range(K):
for i in range(m):
for j in range(n):
if k == 0:
if i == 0 :
dp[i][j][k] += 1
if j == 0:
dp[i][j][k] += 1
if i == m-1:
dp[i][j][k] += 1
if j == n-1:
dp[i][j][k] += 1
else:
temp = 0
if i > 0:
temp += dp[i-1][j][k-1]
else:
temp += 1
if i < m-1:
temp += dp[i+1][j][k-1]
else:
temp += 1
if j > 0:
temp += dp[i][j-1][k-1]
else:
temp += 1
if j < n-1:
temp += dp[i][j+1][k-1]
else:
temp += 1
dp[i][j][k] = temp
print(dp[x][y][-1])