首页 技术 正文
技术 2022年11月11日
0 收藏 601 点赞 2,931 浏览 996 个字

对于一个字符串,对字符串进行分割,分割后的每个子字符串都为回文串,求解所有可行的方案

这个问题可以使用贪心算法与动态规划来求解

步骤如下:

(1)先得出所有的单个字符的回文串,单个字符必定是回文串, 若substr = string[i:j+1]且为回文串,则记为p[i][j] = True

(2)若p[i][j]=True且str[i-1]=str[j+1], 则p[i-1][j+1]也为回文串

python数据结构与算法第十六天【贪心算法与动态规划】

python数据结构与算法第十六天【贪心算法与动态规划】

思考:给定一些1元,2元,5元的纸币,问至少需要多少张,才能达到总价值为N

题目:给定一个长度为N的数组,找出最长递增子序列;例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8}, 则其最长的单调递增子序列为{5, 6, 7, 8}, 长度为4

python数据结构与算法第十六天【贪心算法与动态规划】

python数据结构与算法第十六天【贪心算法与动态规划】

python数据结构与算法第十六天【贪心算法与动态规划】

求解最长单调递增子序列的长度如下:

python数据结构与算法第十六天【贪心算法与动态规划】

求解最长单调递增子序列本身:

python数据结构与算法第十六天【贪心算法与动态规划】

代码实现(使用python实现如下)

#!/usr/bin/env python#! _*_ coding:UTF-8  _*_def lis():    global data    # longest[i]表示以data[i]结尾的最长单增子序列的长度    global longest    # 求解的结果, 最长单增子序列的长度    global nlis    global prefix    global result    size = len(data)    #首先对longest进行初始化    for i in range(size):        longest.append(1)    #遍历生成中间结果    for i in range(1, size, 1):        for j in range(i):            if data[j] <= data[i]:                longest[i] = max(longest[i], longest[j] + 1)        nlis = max(nlis, longest[i])if __name__ == "__main__":    data = [1, 4, 5, 6, 2, 3, 8, 9, 10, 11, 12, 12, 1]    longest = []    nlis = 0    prefix = []    result = []    lis()    print longest

结果:

/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/bat_day16/lis_test.py[1, 2, 3, 4, 2, 3, 5, 6, 7, 8, 9, 10, 2]Process finished with exit code 0
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294