最长子序列和 动态规划python_算法基础之python实现动态规划中数字三角形和最长上升子序列问题...
数字三角形问题:python
问题描述:函数
问题分析:spa
程序代码:(递归法和动归法)code
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 14 16:35:43 2018
@author: lizihua
题目:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
如上三角形,找出一条从顶部到底部的路径,使得路径所通过的数字之和最大。
要求:每步只能向左下或右下走,最后输出这个最大和便可。
其中三角形的行数大于1小于等于100,数字为0~99
输入:第一行n表明三角形行数
接下来n行为三角形各行的数值 (函数从1开始数)
################递归法##################
#缺点:深度遍历每条路径,存在大量重复计算,复杂度为O(2^n),当n=100时,会超时
import numpy as np
n=int(input("请输入三角形行数:"))
D=np.zeros((n,n))
for i in range(n):
D[i]=input("请输入第"+str(i+1)+"行数值:").split(' ')
#将line中的元素转换为整型
D[i] = list(map(int, D[i]))
print(D)
def MaxSum(i,j):
if (i+1)==n:
return D[i][j]
x=MaxSum(i+1,j)
y=MaxSum(i+1,j+1)
return max(x,y)+D[i][j]
print(MaxSum(0,0))
"""
################动态规划法##################
#每次计算完MaxSum[i][j],都将其保存起来,下次用到,则直接调用,其复杂度为O(n^2)
import numpy as np
n=int(input("请输入三角形行数:"))
D=np.zeros((n,n))
for i in range(n):
D[i]=input("请输入第"+str(i+1)+"行数值:").split(' ')
#将line中的元素转换为整型
D[i] = list(map(int, D[i]))
print(D)
def MaxSum(i,j):
global maxsum
maxsum=np.ones((n,n))*(-1)
if maxsum[i][j]!=-1:
return maxsum[i][j]
if (i+1)==n:
maxsum[i][j]=D[i][j]
else:
x=MaxSum(i+1,j)
y=MaxSum(i+1,j+1)
maxsum[i][j]=max(x,y)+D[i][j]
return maxsum[i][j]
print(maxsum)
print(MaxSum(0,0))
最长上升子序列问题:blog
问题描述:递归
问题分析:utf-8
程序代码:input
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 15 10:16:22 2018
@author: lizihua
题目:对于给定序列,求最长上升子序列的长度
"""
import numpy as np
n=int(input("请输入给定序列的长度N:"))
a=np.zeros(n)
maxLen=np.zeros(n)
a=input("请输入给定序列:").split(' ')
#将a中的元素转换为整型
a = list(map(int, a))
print(a)
for i in range(1,n):
for j in range(1,i):
if a[i]>a[j]:
maxLen[j]=max(maxLen[j],maxLen[j]+1)
print(max(maxLen))
最长子序列和 动态规划python_算法基础之python实现动态规划中数字三角形和最长上升子序列问题...相关推荐
- 数字三角形,最长上升子序列,背包模型 AcWing算法提高课 (详解)
目录 数字三角形模型(只能向右和向下或向左和向上) AcWing 1015. 摘花生 AcWing 1018. 最低通行费(曼哈顿距离-向右和向下-求最小值-初始化) AcWing 1027. 方格取 ...
- 为什么神经元有数千个突触,一个新皮质中的序列记忆理论(HTM算法基础)
为什么神经元有数千个突触,一个新皮质中的序列记忆理论(HTM算法基础) Jeff Hawkins* and Subutai Ahmad Numenta, Inc., Redwood City, CA, ...
- 编程没基础学python多长时间--零基础学Python,从入门到精通需要多长时间
求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...
- python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间
求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...
- 1177: 按要求排序(指针专题)_L2算法基础第10课 排序中
L2-算法基础-第10课 排序中 排序 归并排序 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法.该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 ...
- python算法基础设计模式,python常见的设计模式
Python有设计模式么 Python设计模式主要分为三大类:创建型模式.结构型模式.行为型模式;三 大类中又被细分为23种设计模式,以下这几种是最常见的. 单例模式:是一种常用的软件设计模式,该模式 ...
- 零基础go还是python_零基础学习Python的经验之谈
因为薪资比较高的,所以很多人选择当一名程序员,但是关于程序的语言有很多,Python就是其中一个,那么在零基础学习或者参加Python培训时,有什么经验呢?今天小编就来给大家讲一下吧! 1.一定要弄清 ...
- 统计信号处理基础_0基础学Python,就业中你需要建立360度无死角技能树
1956年,人工智能的概念就已经提出,但在以前,人工智能大多只是存在于书本和荧幕中,到了今天,生活中充斥着人工智能的影子,智能语音助手.翻译器.指纹识别.人脸识别.无人驾驶...... 自阿尔法围棋出 ...
- python算法攻略_算法基础及python实现笔记一(堆和DFS)
排序及搜索 讲到排序搜索首先要认识 Python 的基本数据存储结构. NumPy and Pandas 包都提供一些容器可以利用. 堆 (stack) 先进后出原则.比如,一个吃货吃东西,一直吃一直 ...
最新文章
- 迁移学习之InceptionV3(159层),Xception(126层),Inception_ResNet_V2(572层)(图像识别)
- 新算法可模拟人脑整体神经电路
- Jdbc模版式写法与Spring-JdbcTemplate的比较
- 【渝粤教育】电大中专电子商务网站建设与维护 (7)作业 题库
- 《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
- 斯坦福自然语言组的NLP及计算语言学的资料汇总
- 计算机在教学中应用论文,极域电子教室在计算机教学中的应用
- Ace Admin中表格按钮的使用方法——表格导出为xls、pdf,表格打印预览等
- uniapp小程序生成海报图
- 遇见phpDesigner我笑了 PHP开发利器
- WEB表单设计学习心得
- 在Ubuntu上安装WPS,并解决字体缺失问题
- GB28181学习笔记2 SIP测试工具 Yate安装使用
- 工作缺点和不足及措施_个人工作存在的不足和改进措施_个人工作存在问题和整改方案...
- Fluent残差图中continuity不收敛如何处理
- 撰写全英文EI会议论文值得注意的要点!
- Android获取手机中外置内存卡、内置内存卡、手机内存路径
- 大变局时代的搜索引擎走向何方?
- DevOps 测试实践
- 两种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用