首页 > 编程语言 >左程云动态规划问题学习(python版本重写)

左程云动态规划问题学习(python版本重写)

时间:2023-05-21 16:45:07浏览次数:51  
标签:return cur python rest aim ans 左程 重写 dp

哔哩哔哩:

6.二次优化(3)_哔哩哔哩_bilibili

第一个版本对动态规划的理解

# 问题有大量的重复问题,比如求feibolaqie(5) = feibolaqie(4)+feibolaqie(3),
# 所以有重复问题,通过缓存优化,把以前求过的问题做缓存
# def feibolaqie(n):
#     if n ==1:
#         return 1
#     elif n==2:
#         return 1
#     else:
#         return feibolaqie(n-1)+feibolaqie(n-2)
# print(feibolaqie(7))
# 题目有个机器人,在步长为n的数组中,从开始start位置,走K步到aim位置
# def ways(n, start, aim, k):
#     return process(start, aim, k, n)
#
#
# def process(cur, aim, rest, n):
#     if rest == 0:
#         return 1 if cur == aim else 0
#     if cur == 1:
#         return process(2, aim, rest - 1, n)
#     elif cur == n:
#         return process(n - 1, aim, rest - 1, n)
#     else:
#         return process(cur - 1, aim, rest - 1, n) + process(cur + 1, aim, rest - 1, n)
# 使用缓存对递归经行问题优化,傻缓存法
# def ways1(n, start, aim, k):
#     # 定义一个[n+1][k+1]的二维数组初始话为-1表示数据没有被复制,这里要用N因为可以走回去
#     dp = [[-1 for i in range(k+1)] for j in range(n+1)]
#     return process1(start, aim, k, n, dp)
#
#
# def process1(cur, aim, rest, n, dp):
#     if dp[cur][rest] != -1:
#         return dp[cur][rest]
#     ans = 0
#     if rest == 0:
#         ans = 1 if cur == aim else 0
#     elif cur == 1:
#         ans = process1(2, aim, rest - 1, n, dp)
#     elif cur == n:
#         ans = process1(n - 1, aim, rest - 1, n, dp)
#     else:
#         ans = process1(cur - 1, aim, rest - 1, n, dp) + process1(cur + 1, aim, rest - 1, n, dp)
#     dp[cur][rest] = ans
#     return ans
# 动态规划解决问题
def ways2(n, start, aim, k):
    # 定义一个[n+1][k+1]的二维数组初始话为-1表示数据没有被复制,这里要用N因为可以走回去,全部定义为0因为rest为0的时候只有目标值为1
    dp = [[0 for i in range(k + 1)] for j in range(n + 1)]
    # 只需要填充退出条件为rest = 0,因为rest为0的时候只有目标值为1
    dp[aim][0] = 1
    # 填充dp
    for rest in range(1, k + 1):
        dp[1][rest] = dp[2][rest - 1]
        for cur in range(2, n):
            dp[cur][rest] = dp[cur - 1][rest - 1] + dp[cur + 1][rest - 1]
        dp[n][rest] = dp[n - 1][rest - 1]
    return dp[start][k]


print(ways2(5, 2, 4, 6))
View Code

 

标签:return,cur,python,rest,aim,ans,左程,重写,dp
From: https://www.cnblogs.com/xiaoruirui/p/17418771.html

相关文章

  • python爬取《肖申克的救赎》电影演员
    importrequestsfrombs4importBeautifulSoup#豆瓣电影页面链接url='https://movie.douban.com/subject/1292052/'#设置请求头信息,模拟浏览器请求headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,lik......
  • python-docx - 3
    1.样式1.1访问样式使用Document.styles属性访问样式。fromdocximportDocumentdocument=Document()#获取样式对象,这里面可以像字典一样访问,也可以迭代styles=document.stylesforstyleinstyles:print(style.name,"\t",style.type)#获取一个正文样式......
  • Python使用pip安装第三方包
    ​ 参考文章:如何安装第三方的Python包?-知乎​pipinstall-i网址包名称例如:pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simple/numpy常用的网址有:清华:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/......
  • Python安装教程
    Python安装教程https://zhuanlan.zhihu.com/p/569019068python下载https://www.python.org/downloads/windows/pycharm下载https://www.jetbrains.com/pycharm/download/#section=windows配置https://zhuanlan.zhihu.com/p/587849846?utm_id=0......
  • python 云服务器部署 flask 项目
    测试模式,非生产模式1.修改host和port 2.上传项目 3.下载python项目管理器  4.创建项目 5.开放端口,远程连接数据库......
  • 深入理解 python 虚拟机:魔术方法之数学计算
    深入理解python虚拟机:魔术方法之数学计算在本篇文章当中主要给大家介绍在python当中一些常见的魔术方法,本篇文章主要是关于与数学计算相关的一些魔术方法,在很多科学计算的包当中都使用到了这些魔术方法。大小比较当我们在Python中定义自己的类时,可以通过重写一些特殊方法来......
  • Python多进程编程-进程间共享数据(Value、Array、Manager)
    转载:(14条消息)Python多进程编程-进程间共享数据(Value、Array、Manager)_managervalue_Loadinggggg的博客-CSDN博客Value、Array是通过共享内存的方式共享数据Manager是通过共享进程的方式共享数据。Value\Array实例代码:importmultiprocessing#Value/Arraydeffunc1(a,arr......
  • Python并发编程:为什么传入进程池的目标函数不执行,也没有报错?
    转载:Python并发编程:为什么传入进程池的目标函数不执行,也没有报错?-知乎(zhihu.com)python初学者使用进程池时,很容易掉坑里! python并发编程中,这个问题是新手经常容易犯的错,十个人,大概有九个都会掉入其中。借此机会,对该问题的前因后果做个记录,分享于此!一、错误代码复现我......
  • python 进程池multiprocessing.Pool
    转载:python进程池multiprocessing.Pool(44)-知乎(zhihu.com)python进程池Pool和前面讲解的python线程池类似,虽然使用多进程能提高效率,但是进程的创建会消耗大量的计算机资源(进程Process的创建远远大于线程Thread创建占用的资源),线程是计算机最小的运行单位,连线程都需要使用线程......
  • python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进
    转载:(14条消息)python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进程池ftp_pythonsubmit_易辰_的博客-CSDN博客引入进程池在学习线程池之前,我们先看一个例子frommultiprocessingimportProcessimporttimedeftask(name):print(......