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])
相关推荐
复杂网络1 小时前
论最小 Agent 计算机的形态
算法
曲幽1 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱11 小时前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵12 小时前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio16 小时前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
kisshyshy16 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
用户03321266636717 小时前
使用 Python 从零创建 Word 文档
python
Csvn1 天前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python
曲幽1 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate