题解 | Python 过河卒

[NOIP2002 普及组] 过河卒

https://www.nowcoder.com/practice/cc1a9bc523a24716a117b438a1dc5706

n, m, x, y = list(map(int, input().split()))

dp = [[0] * (m + 1) for _ in range(n + 1)]
tag = [[True] * (m + 1) for _ in range(n + 1)]

# 马可以攻击到的点的相对位置
knight_moves = [(0,0), (-2, -1), (-1, -2), (1, -2), (2, -1), 
                (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 标记马控制的范围
for dx, dy in knight_moves:
    nx, ny = x + dx, y + dy
    if 0 <= nx <= n and 0 <= ny <= m:
        tag[nx][ny] = False

# 初始化起点
dp[0][0] = 1

# 初始化第一行
for j in range(1, m + 1):
    if tag[0][j]:
        dp[0][j] = dp[0][j - 1]
    else:
        break

# 初始化第一列
for i in range(1, n + 1):
    if tag[i][0]:
        dp[i][0] = dp[i - 1][0]
    else:
        break

# 计算路径
for i in range(1, n + 1):
    for j in range(1, m + 1):
        if tag[i][j]:
            dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

print(dp[n][m])

全部评论

相关推荐

每晚夜里独自颤抖:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务