算法————设计一个O(N^2)时间复杂度的算法,找出由n个数组成序列的最长单调递增序列

该博客介绍了如何使用动态规划思想,通过遍历数组并不断更新递增序列长度来寻找最长单调递增序列。博主通过类似冒泡的策略,逐步扩大搜索范围并更新子序列,最终在所有更新的子序列中找到最长的一个。文章还提供了算法的时间复杂度分析,为O(N^2)。
摘要由CSDN通过智能技术生成
关于这道题,其实就是利用动态规划的一种思想,解这道题有点类似冒泡,采用遍历数组序列,不断更新递增序列的长度以至于来找到最长单调递增序列。
关于问题呢,大概已有有一点思路:
下面将思路画一画,通过将思想的整理,得到这样一副图:

这里写图片描述
通过图片我们可以看出要想找到最长递增子序列,我们得不断扩大范围这里是指图片中的(sub[i]所对应的区间),其实也就在小区间得到递增的序列的长度,然后继续扩大区间来更序列长度,更新到最大区间时就会找到一个最大的递增子序列。

先画一画然后得出这样的解决方案,然后就是调整代码实现这一过程便是找到最优解的方案。
以下是实现代码:

mian()函数:

#include<iostream>
using namespace std;
#define MAX(a,b) a>b?a:b
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值