Q30用插线板制作章鱼脚状线路2

本博客介绍了一种将递归深度优先搜索(DFS)转换为动态规划(DP)的方法,用于解决类似章鱼脚状线路的问题。通过预先计算并存储中间结果,避免了重复计算,显著提高了算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E:/GitHub/suanfaquti/Q30用插线板制作章鱼脚状线路2.py
#把递归的dfs转动态规划
m=20
dfs1=[0]*(m+1)
dfs1[1]=1
for n in range(2,m+1):
    cnt=dfs1[n]
    for i in range(1,n//2+1):
        if i==n/2:
            c=dfs1[i]
            cnt+=c*(c+1)/2
        else:
            cnt+=dfs1[i]*dfs1[n-i]
    for i in range(1,n//3+1):
        for j in range(i,(n-i)//2+1):           
            if i==j and i==n-i-j:
                c=dfs1[i]
                cnt+=c*(c+1)*(c+2)/6
            elif i==j or i==n-i-j:
                c=dfs1[i]
                cnt+=c*(c+1)/2*dfs1[n-i*2]
            elif j==n-i-j:
                c=dfs1[j]
                cnt+=c*(c+1)/2*dfs1[n-j*2]
            else:
                cnt+=dfs1[i]*dfs1[j]*dfs1[n-i-j]
    dfs1[n]=cnt
    
print(dfs1[-1])    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值