设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。
一、实验目的
1、理解动态规划的基本思想
2、掌握动态规划解决问题的基本步骤,并能进行动态规划算法时间空间复杂度分析。
二、实验内容
设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。
三、算法描述
1.输入一个序列b[]
2.将该序列进行排序得到新的序列a[](递增的哦)
3.将问题转化为求这两个序列a,b的最大公共子序列
4.运用动态规划的解题思想,先求得子问题的结果,记录在c[][]数组中,
再根据c[][]中的值的情况得到最大公共子序列。
四、程序
#include <iostream>using namespace std;void sortarry(int a[],int number);
void LCSLength(int n,int a[],int b[],int c[10][10]);
void LCS(int i,int j,int a[],int c[10][10]);
int main()
{cout<<"How many numbers you want to input?"<<" ";int number=5;cin>>number;int b[number];cout<<"OK,now please input them!"<<endl;for(int i=1;i<=number;i++)cin>>b[i];cout<<"Now you can see the order arry: ";for(int i=1;i<=number;i++)cout<<b[i];cout<<endl;int a[number];for(int i=1;i<=number;i++)a[i]=b[i];sortarry(b,number);cout<<"Now you can see the arry after sort: ";for(int i=1;i<=number;i++)cout<<b[i];cout<<endl;int c[10][10]={0};LCSLength(number,a,b,c);cout<<"Let we see the arry of C:"<<endl;for(int i=1;i<=number;i++){for(int j=1;j<=number;j++)cout<<c[i][j]<<'\t';cout<<endl;}cout<<endl<<"OK,I have founded the longest same arry:"<<endl;LCS(number,number,a,c);}void sortarry(int a[],int number)
{for(int i=1;i<=number;i++){for(int j=i;j<=number;j++)if(a[i]>a[j]){int temp=a[j];a[j]=a[i];a[i]=temp;}}
}void LCSLength(int n,int a[],int b[],int c[10][10])
{int i,j;for( i=1;i<n;i++) c[i][0]=0;for( j=1;j<n;j++) c[0][j]=0;for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(a[i]==b[j]) {c[i][j]=c[i-1][j-1]+1;}else if(c[i-1][j]>=c[i][j-1]) c[i][j]=c[i-1][j];else c[i][j]=c[i][j-1];}}}
void LCS(int i,int j,int a[],int c[10][10])
{if(i==0||j==0) return ;if(c[i][j]==c[i-1][j-1]+1){LCS(i-1,j-1,a,c);cout<<a[i];}else if(c[i][j]==c[i-1][j]){LCS(i-1,j,a,c);}elseLCS(i,j-1,a,c);
}```![在这里插入图片描述](https://img-blog.csdnimg.cn/2019100921175725.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzIxNzkyMQ==,size_16,color_FFFFFF,t_70)
设计一个O(n2)时间的算法,找出由n个数组成的序列的最长单调递增子序列。相关推荐
- 最长单调递增子序列O(NlogN)算法
O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5. 下面一步一步试着找出它. 我们定义一个序列B,然后 ...
- 算法实验-最长单调递增子序列长度
问题描述 解决思路 O(n^2) 首先考虑使用动态规划的方法解决该问题.首先将原问题分解为子问题.对于长度为n的序列(从下标1开始),假设前n-1个元素形成了n-1个以arr[i]结尾的单调递增最长子 ...
- string 找出所有数字 index_【一天一大 lee】单调递增的数字 (难度:中等) Day20201215...
20201215 题目: 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 ...
- 请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素
给定一个单向链表(长度未知),请设计一个既节省时间又节省空间的算法来找出该链表中的倒数第m个元素. 实现这个算法,并为可能出现的特例情况安排好处理措施. 倒数第m个元素"是这样规定的:当m= ...
- 现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数...
现在有一个整数数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数. 方法1:Hash链表 方法2:使用两个变量A和B,其中A存储某个数组中的数,B用来计数.开始时将B初始化为0 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标
34. 在排序数组中查找元素的第一个和最后一个位置 难度中等2012 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target.请你找出给定目标值在数组中的开始位置和结束位置. 如果 ...
- 数组两个整数相加 c语言,作业帮:给定一个整数数组,找出其中两个数相加等于目标值(去重set)...
题目描述 给定一个整数数组,找出其中两个数相加等于目标值 输入 [1,3,5,7,9,11] 10 输出 1,9 3,7 代码: import java.util.HashMap; import ja ...
- 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵
题目描述: 一个N*M的矩阵,找出这个矩阵中所有元素的和不小于K的面积最小的子矩阵(矩阵中元素个数为矩阵面积) 输入: 每个案例第一行三个正整数N,M<=100,表示矩阵大小,和一个整数K 接下 ...
- 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...
- 知哈希算法——找出相似的图片
知哈希算法--找出相似的图片 感知哈希算法--找出相似的图片 - Create Chen - 博客园 知哈希算法--找出相似的图片 Google 图片搜索功能 在谷歌图片搜索中, 用户可以上传一张图片 ...
最新文章
- leetcode 200岛屿的个数
- 【10大专利看iPhone未来】全息图、虚拟卷轴,移动AR……苹果还有哪些黑科技?...
- create-react-app 配置sass
- 使用ulimit设置文件最大打开数
- 这个需求的目的是什么?
- [问题记录.VisualStudio]VS2013无法新增和打开项目
- 2009年5月软件设计师考试试题解析全国首发
- html下拉框设置默认值_html 里select 下拉列表中设置默认值怎么写
- DotPass for Mac(密码生成器)
- OPPOR9m官方固件刷机教程
- 微软商店打不开,错误代码0x80131500
- grammarly word安装失败
- App安全软件防护能力检测
- shell脚本 追加_Linux添加shell(.sh)脚本并添加定时任务
- 设计模式-进阶架构师必备知识(一篇读懂,就一篇)
- Python数据分析训练营——Python数据分析之Panads-1
- 和菜鸟一起学linux之wifi学习记录
- 【专题】经典DP问题(上)
- 【转】Python实现量化选股
- bedtools指南
热门文章
- word图片靠右_word设置图片边缘透明的方法步骤
- Centos7做回收站功能,防止误删除
- java 数组写入txt_java编程,如何把一个数组中的内容写入一个txt文档中
- 抖音从流量上游杀入本地生活市场,美团如何“以牙还牙”?
- ps 读取计算机特定首选项时出错,PS操作中常见的疑难杂症之首选项
- TOM163vip邮箱靓号注册,域名邮箱如何注册
- 密码编码学与网络安全
- Priceline拥有五个子品牌分别是:Booking.com、Priceline.com、Agoda、Kayak 以及Rentalcars
- git的撤销操作amend
- 老师偷偷塞给我一份资料,封面写着《操作系统》,下面一行小字