本题以动态规划考虑求解 小虾同学只能从两个方向走,即他在每一个坐标的走法是他在该位置前两个方向上坐标走法的和(动态规划分解子问题)。 具体用公式表示为
#状态转移方程
dp[i][j]=dp[i][j-1]+dp[i-1][j]
不能通过boss的位置,所以经过boss位置时,dp数组定义为0 具体代码如下:
x, y,n =map(int,input().split())
ls =[[0 for i in range(y+1)] for j in range(x+1)]
for i in range(n):
a,b = map(int,input().split())
ls[a][b]=1
dp = [[0 for i in range(y+1)] for j in range(x+1)]
for i in range(x+1):
for j in range(y+1):
if ls[i][j]==1:
dp[i][j]=0
continue
if i==0 or j==0:
dp[i][j]=1
else:
dp[i][j]=dp[i][j-1]+dp[i-1][j]
print(dp[x][y])