DP练习_P1002 [NOIP2002 普及组] 过河卒_python_蓝桥杯

P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

1.DFS做超时40分

python 复制代码
n, m, x, y = map(int,input().split())

flag = [[0]*(n+10) for _ in range(m+10)]
maps = [[0]*(n+10) for _ in range(m+10)]
d = [[2,1],[2,-1],[-2,1],[-2,-1],[1,2],[1,-2],[-1,2],[-1,-2],[0,0]]

for xx,yy in d:
    dx = x+xx
    dy = y+yy
    if 0<=dx<=n and 0<=dy<=m:
        maps[dx][dy] = 1

flag[0][0] = 1
ans = 0

dd = [[0,1],[1,0]]
def dfs(sx,sy):
    global ans
    if sx == n and sy == m:
        ans += 1
        return
    for xx, yy in dd:
        dx = sx+xx
        dy = sy+yy
        if 0<=dx<=n and 0<=dy<=m:
            if flag[dx][dy] == 0 and maps[dx][dy] == 0:
                flag[dx][dy] = 1
                dfs(dx,dy)
                flag[dx][dy] = 0

dfs(0,0)
print(ans)

2.DP做100分

python 复制代码
n, m, x, y = map(int,input().split())

dp = [[0]*(n+10) for _ in range(m+10)]
flag = [[0]*(n+10) for _ in range(m+10)]
d = [[2,1],[2,-1],[-2,1],[-2,-1],[1,2],[1,-2],[-1,2],[-1,-2]]

for xx,yy in d:
    dx = x+xx
    dy = y+yy
    if 0<=dx<=n and 0<=dy<=m:
        flag[dx][dy] = 1
flag[x][y] = 1
flag[0][0] = 1

dp[0][0] = 1
for i in range(n+1):
    for j in range(m+1):
        if flag[i][j] == 0:
            if i == 0:
                dp[i][j] = dp[i][j-1]
            else:
                if j == 0:
                    dp[i][j] = dp[i-1][j]
                else:
                    dp[i][j] = dp[i-1][j] + dp[i][j-1]

print(dp[n][m])
相关推荐
chenchihwen9 分钟前
深度解析RAG系统中的PDF解析模块:Docling集成与并行处理实践
python·算法·pdf
MasonYyp21 分钟前
简单使用Marker
python·语言模型
std860211 小时前
使用 python-docx 和 difflib 对比 Word 文档
python
java1234_小锋1 小时前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现分类问题
python·深度学习·tensorflow·tensorflow2
做科研的周师兄1 小时前
【机器学习入门】7.4 随机森林:一文吃透随机森林——从原理到核心特点
人工智能·学习·算法·随机森林·机器学习·支持向量机·数据挖掘
星期天要睡觉1 小时前
计算机视觉(opencv)——人脸网格关键点检测
python·opencv·计算机视觉
用户8356290780512 小时前
用Python轻松转换Excel表格为HTML格式
后端·python
weixin_307779132 小时前
AWS Redshift 数据仓库完整配置与自动化管理指南
开发语言·数据仓库·python·云计算·aws
Sunsets_Red2 小时前
差分操作正确性证明
java·c语言·c++·python·算法·c#
APIshop2 小时前
代码实例:Python 爬虫抓取与解析 JSON 数据
爬虫·python·json