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. 【正则表达式】用js实现千位分隔符,怎么实现?

    (?=pattern)  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串.这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用.例如,'Windows (?=95|98|NT| ...

  2. 网络侦查与网络扫描-P201421410029

    中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告   实验一 网络侦查与网络扫描     学生姓名 李政浩 年级 2014 ...

  3. RPC使用rabbitmq实现

    两天时间重写公司架构在本地实现测试学习 双向连接客户端和服务端配置: 连接rabbitmq服务器 定义消息队列 配置发送请求的模板:交换机.消息队列. 配置监听处理:监听的队列.消息转换处理 配置处理 ...

  4. Vue表单绑定(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)

    <!DOCTYPE html><html>    <head>        <meta charset="utf-8">      ...

  5. python_基础硬件知识

    通过学习这一篇章的内容,回顾了<数字逻辑><计算机组成原理><操作系统> 这几门课的相关知识 有时候,总是要了解一些基本,才能更容易理解程序 以下是我的一些听课记录 ...

  6. kettle学习笔记(五)——kettle输出步骤

    一.概述 数据库表: • 表输出 • 更新,删除,插入/更新 • 批量加载(mysql,oracle) • 数据同步 文件: • SQL 文件输出 • 文本文件输出 • XML 输出 • Excel ...

  7. jQuery调用Asp.Net后台方法

    常用的ajax就不讲了,这里主要是说通过ajax调用asp.net后台的cs文件暴露的方法. 前台: <%@ Page Language="C#" AutoEventWire ...

  8. 汇编 (NOT)按位取反指令

    知识点:  (NOT)按位取反指令  逻辑取反(!)  按位取反(~)  SETZ(SETE) 取ZF位值保存  SETNZ(SETNE)将ZF位值取反后保存 一.逻辑取反(!) !111 ...

  9. 双面间谍(spy)

    双面间谍 链接 分析: 戳这 代码: #include<cstdio> #include<algorithm> #include<cstdio> #include& ...

  10. 2、Arx二次开发创建第一个应用程序

    一.本节课程 Arx二次开发创建第一个应用程序 二.本节要讲解的知识点 1.手动创建ARX的应用的步骤. 2.应用向导创建ARX应用程序的步骤. 三.具体内容 1.需求:创建一个Hello World ...