1 爬楼梯(Fibonacci)

#有一楼梯共M级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
def fun(m):
c = [0]*m
c[0] = 1
c[1] = 2
for i in range(2,m):
c[i] = c[i-1]+c[i-2]
return c[m-1]
print(fun(3))

2最长公共子序列长度

def lcs(x,y,m,n):
c = [[0]*(n+1)]*(m+1)
print(len(c),len(c[0]))
for i in range(m):
for j in range(n):
if x[i]==y[j]:
c[i+1][j+1]=c[i][j]+1
else:
c[i+1][j+1]=max(c[i+1][j],c[i][j+1])
return c[m][n]
x = [1,3,2,5,6]
y = [6,3,2,4,5,7,6]
m,n = 5,7
print(lcs(x,y,m,n))

  变形有最短编辑距离

3 最长上升子序列长度

def lis(x,m):
if m == 0:
return 0
c = [1]*m #c[i]为以i下标为结尾的最长上升子序列长度,如果m不为0,那么结果至少为1
for i in range(m):
for j in range(i):
if x[i]>x[j]:
c[i] = max(c[j]+1,c[i])
return max(c)
x = [2,1,5,7,10,4]
m = 6
print(lis(x,m))

4 硬币找零之最少硬币方案

def coinfun(coin,aim):
max_value = aim+1
c = [0]+[max_value]*aim
#两行写法,很python
# for i in range(1,aim+1):
# c[i] = min([c[i-j] if i-j>=0 else max_value for j in coin ])+1
#常规写法
for i in range(1,aim+1):
for j in coin:
if i-j>=0:
c[i] = min(c[i],c[i-j]+1)
if c[aim] == aim+1:
return -1 #没法找
return c[aim]
coin = [5,2,3]
aim = 20
print(coinfun(coin,aim))

5 硬币找零之最大找零种数

def coinfun(coin,aim):
c = [0]*(aim+1)
c[0]=1
for j in coin:
for i in range(1,aim+1):
if i-j>=0:
c[i] += c[i-j]
if c[aim] == 0:
return -1 #没法找
return c[aim]
coin = [5,2,3]
aim = 20
print(coinfun(coin,aim))

6 最大连续子序列和

#最大连续子序列和
def maxsub(A):
dp = [0] *len(A) #以i下表为结尾的最大连续子序列和(大概这个意思,不太准确明白就行)
dp[0] = A[0]
for i,item in enumerate(A):
dp[i] = item+dp[i-1] if dp[i-1]>0 else item
return max(dp)
A = [3,-1,5,-7,4]
print(maxsub(A))

7 不相邻元素最大累加和

#最大不相邻累加和
def sum1(arr):
c = [0]*len(arr)
c[0] = arr[0]
c[1] = max(arr[0],arr[1])
for i in range(2,len(arr)):
c[i] = max(c[i-1],c[i-2]+arr[i])
return c[-1]
arr = [3, 2, 1, 9, 4, 2]
print(sum1(arr))

动态规划刷题集python代码的更多相关文章

  1. lintcode 刷题 by python 总结(1)

    博主之前在学习 python 的数据结构与算法的基础知识,用的是<problem-solving-with-algorithms-and-data-structure-using-python& ...

  2. noip2019——动态规划刷题历程

    加粗的是值得总结的 从洛谷的普及题开始刷题: 背包式dp(有些技巧的) 1.p2639[USACO09OCT]Bessie的体重问题 -p1049取模意义下01背包 技巧:重量=价值 2.金明的预算问 ...

  3. 山东理工大学SDUT - ACM OJ 题: Python代码 及分析

    Python基础语法学习完成,先刷基础题100道巩固 ,附 题目.代码.知识分析 题目:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index ...

  4. lintcode 刷题 by python 部分链表题总结(2)

    本篇博客对最近做的链表的算法题做个简单的小结,主要描述题目和提供解题思路,具体代码见我的 github:https://github.com/MUSK1881/lintcode-by-python 3 ...

  5. 牛客网Java刷题知识点之代码块(局部代码快、构造代码块、静态代码块)

    不多说,直接上干货! 代码块包括局部代码快.构造代码块.静态代码块. 代码块,就是一段独立的代码空间. 1.局部代码快 对局部变量的生命周期进行控制. 2.构造代码块 对所有对象进行初始化. 3.静态 ...

  6. 酸菜鱼的 DP动态规划 刷题记录

    BZOJ1026: [SCOI2009]windy数 数位dp.很多小细节... 代码: #include <bits/stdc++.h> using namespace std; typ ...

  7. python部落刷题宝学到的内置函数

    最近加入了python部落,感觉里面的刷题宝很有意思,玩了一下,知道了许多以前并不清楚的内置函数,然后感觉到快要记不住了,所以开始陈列一下 1.divmod(a,b):取a除以b的商和余数,功效等价于 ...

  8. 教你用python写:HDU刷题神器

    声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...

  9. 刷题翻车:python 布尔运算操作符的优先级

    前两天在 xue.cn 体验答题挑战,我有道题做错了,却不明白错在哪里.题目大概如下,代码运行后将打印什么? if True or False and False: print('1') else: ...

随机推荐

  1. 编程算法 - 左旋转字符串 代码(C)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/37689725 左旋转字符串 代码(C) 本文 ...

  2. Universal-Image-Loader源码分析(二)——载入图片的过程分析

    之前的文章,在上面建立完config之后,UIl通过ImageLoader.getInstance().init(config.build());来初始化ImageLoader对象,之后就可以用Ima ...

  3. OpenCV——Mat类的创建、复制、函数

    Mat类的创建: 方法一: 通过读入一张图像,直接转换为Mat对象 Mat image = imread("test.jpg"); 其中 imread()方法需要传入String类 ...

  4. 分享四个 Linux 上的网络信息嗅探工具

    在计算机网络中,数据是暴露的,因为数据包传输是无法隐藏的,所以让我们来使用 whois.dig.nmcli和 nmap 这四个工具来嗅探网络吧. 请注意,不要在不属于自己的网络上运行 nmap ,因为 ...

  5. ROS 安装kinect驱动+测试

    有时 ,需要用到kinect 的所有需要驱动才能使用kinect ,turtlebot2上的传感器就是kinect ,所以kinect 的用处还是很多的 , 今天就来讲一下kinect 驱动在unbu ...

  6. 【转】PHP 类与对象

    原文:http://blog.csdn.net/e421083458/article/details/8217650 1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User() ...

  7. 20155233 《网络对抗》 Exp5 MSF基础应用

    主动攻击:ms08_067漏洞攻击 启用msf终端msfconsole然后使用search命令搜索该漏洞对应的模块:search ms08_067 选择输入use exploit/windows/sm ...

  8. 解决debug到jdk源码时不能查看变量值的问题

    目录 如何跟踪jdk源码 1. 编译源码 2. 关联源码 3. 大功告成 如何跟踪jdk源码 看到这个标题大概大家都会在心里想谁还跟踪个源码呀,在eclipse中打个断点,以debug的方式运行,然后 ...

  9. C语言学习之结构体

    前言 一直以来,C语言的学习都在入门阶段,只用到数组.函数.循环.选择.位运算这些基本的知识,较少用到指针.预处理.结构体.枚举类型.文件操作等这些C语言的精髓内容,现在想想真不敢说自己熟练掌握C语言 ...

  10. idea java方法中 传多个参数对象 的复制粘贴快速处理方法

    比如像这种的传多个参数对象,我是直接复制过来,然后把第一个字母改成大写,然后后面的实例对象敲一个第一个字符的小写,回车就直接出来了 在写调用参数的地方,ctrl+p 调出提示,然后按下提示里的实例的第 ...