当前位置: 首页 > news >正文

Day33-动态规划

1. 不同路径-62

62. 不同路径 - 力扣(LeetCode)

class Solution(object):def uniquePaths(self, m, n):""":type m: int:type n: int:rtype: int"""# dp[i][j]表示i到j有多少种走法# dp[0][0]是1【其实也可以理解,不需要走也是一种走法】dp = [[0]*n for _ in range(m)]for i in range(m):dp[i][0] = 1for j in range(n):dp[0][j] =1for i in range(1,m):for j in range(1,n):dp[i][j] = dp[i-1][j]+dp[i][j-1]return dp[m-1][n-1]

2. 不同路径II-63

63. 不同路径 II - 力扣(LeetCode)

class Solution(object):def uniquePathsWithObstacles(self, obstacleGrid):""":type obstacleGrid: List[List[int]]:rtype: int"""m = len(obstacleGrid)n = len(obstacleGrid[0])dp = [[0]*n for _ in range(m)]dp[0][0] = 0 if obstacleGrid[0][0] else 1for i in range(1,m):dp[i][0]=0 if obstacleGrid[i][0] or not dp[i-1][0] else 1for j in range(1,n):dp[0][j]=0 if obstacleGrid[0][j] or not dp[0][j-1] else 1for i in range(1,m):for j in range(1,n):dp[i][j] = 0 if obstacleGrid[i][j] else dp[i][j-1]+dp[i-1][j]return dp[m-1][n-1]
class Solution(object):def uniquePathsWithObstacles(self, obstacleGrid):""":type obstacleGrid: List[List[int]]:rtype: int"""m = len(obstacleGrid)n = len(obstacleGrid[0])dp = [[0]*n for _ in range(m)]# dp[0][0] = 0 if obstacleGrid[0][0] else 1# for i in range(1,m):#     dp[i][0]=0 if obstacleGrid[i][0] or not dp[i-1][0] else 1# for j in range(1,n):#     dp[0][j]=0 if obstacleGrid[0][j] or not dp[0][j-1] else 1for i in range(m):if obstacleGrid[i][0]:breakdp[i][0]=1for j in range(n):if obstacleGrid[0][j]:breakdp[0][j]=1for i in range(1,m):for j in range(1,n):dp[i][j] = 0 if obstacleGrid[i][j] else dp[i][j-1]+dp[i-1][j]return dp[m-1][n-1]

3. 整数拆分-343

343. 整数拆分 - 力扣(LeetCode)

class Solution(object):def integerBreak(self, n):""":type n: int:rtype: int"""# dp[n]就是n拆分后得到的乘积最大值# dp[i]=max(j*dp[i-j])dp=[0,0,1]  # dp[0]和dp[1]都没有意义,就是0if n==2:return dp[2]for i in range(3,n+1):dp.append(i-1)for j in range(2,i//2+1):  # 优化dp[i] = max(dp[i],dp[i-j]*j,(i-j)*j)return dp[n]

4. 不同的二叉搜索树-96

96. 不同的二叉搜索树 - 力扣(LeetCode)

class Solution(object):def numTrees(self, n):""":type n: int:rtype: int"""# dp[i]有多棵树# dp[i]其实就是确定一个头节点,然后左子树的个数乘以右子树的个数,对所有情况进行加和!# dp[0]也是1dp=[1,1]if n==1:return 1for i in range(2,n+1):dp.append(0)for j in range(1,i+1):dp[i]+=dp[j-1]*dp[i-j]return dp[n]

http://www.dtcms.com/a/597229.html

相关文章:

  • 域名访问过程会不会影响网站访问商务网站设计
  • 模仿elementUI 中Carousel 走马灯卡片模式 type=“card“ 的自定义轮播组件 图片之间有宽度
  • 公司网站建设哪家正规wordpress 按别名
  • 网站建设安全架构网络购物平台哪个最好
  • 2048——逻辑思维与矩阵合并算法
  • Qt:判断一个sql语句是否是select语句
  • 【题解】洛谷 P2470 [SCOI2007] 压缩
  • Java1111 实现一个方法,获取属性值 返回name
  • 存储核心:EXT文件系统
  • 品牌型网站的特点站长工具seo查询5g5g
  • 量子信息中的QASM
  • 阿里巴巴做网站费用网站功能价格表
  • MongoDB 删除数据库
  • android studio 在终端指定 jdk 1.8 打包 release~ MacOS版
  • 【STM32】HDC2080温湿度计驱动
  • Highcharts 在 AMD 与 CommonJS 环境下的安装与配置指南
  • 阿里云编辑建设好的网站济南网络优化厂家
  • 如何给 MacOS 更新到指定版本系统
  • jEasyUI 合并单元格详解
  • AJAX学习 ---- axios体验
  • 电子商务网站开发基本流程建立链接
  • MySQL第五次作业(触发器,存储过程)
  • HORIBA MEXA-324M:双组分汽车尾气测量仪技术说明
  • C++进阶:(八)基于红黑树泛型封装实现 map 与 set 容器
  • 网站制作资质wordpress用户名密码注册
  • Redis(1)
  • 《中医基础理论》- 2.哲学基础之藏象学说-心系统详解
  • 智慧养老如何托起“有温度的银发未来”?
  • 做网站编程在程序网站被别人做镜像
  • win2008 r2内存爆满导致前端程序崩溃