当前位置: 首页 > wzjs >正文

投诉举报网站建设方案广州地区网站建设

投诉举报网站建设方案,广州地区网站建设,用路由器做简单的网站,做网站上海公司是我在学习动态规划时遇到的一道题。 题目: 一共有两种解法: 动态规划贪心 二分(很难理解,我还没完全懂。。。) 解法一:动态规划 思路: 状态:nums的前i个数的最长递增子序列。dp…

是我在学习动态规划时遇到的一道题。

题目:

一共有两种解法:

  1. 动态规划
  2. 贪心 二分(很难理解,我还没完全懂。。。)

 

解法一:动态规划

思路:

状态:nums的前i个数的最长递增子序列。dp[i]

转移方程:依次计算每个状态dp[i]的状态,这个状态依赖于前dp[0...i-1]的状态。

如果大于前面的数nums[j] < nums[i],则说明有递增现象了。起码nums[j] ,nums[i]是一对的,如果j前面还有子序列,那岂不是美哉,总之dp[i] = dp[j] + 1。但是别急,万一这个dp[j]小,赋值了反而dp[i]就变小了。我们要的是最长的,先要比较,再确定。

主要是为了防止这种情况:【3 4 5 6 0 1 2 7】

比如这个时候7已经和6比完了,7>6,所以dp[7]=dp[3]+1

然后又和0比,7>0,如果直接dp[7]=dp[4]+1,那么dp[7]就会变成2了。

 最后找到dp里最大的,就是我们想要的。

复杂度计算:

时间复杂度O(n^2)
空间复杂度O(n)

代码:

#include <vector>
//最长递增子序列
//解法一:动态规划
//时间复杂度O(n^2)
//空间复杂度O(n)
class Solution {
public:int lengthOfLIS(std::vector<int>& nums) {//状态就是前i个数最长递增子序列std::vector<int> dp(nums.size(), 1);//状态int max_count = 1;for (int i = 1; i < nums.size(); ++i)//一个一个状态算{//转移方程for (int j = 0; j < i ; ++j)//查询前面的数是否小于{if (nums[j] < nums[i])//如果大于前面的数,则说明有递增{dp[i]=std::max(dp[i], dp[j] + 1);//有递增也不能直接赋值,有可能这个dp[j]小,赋值了反而dp[i]就变小了}}max_count = max_count > dp[i] ? max_count : dp[i];//取最大的dp[i]}return max_count;}
};void Test_solution1()
{std::vector<int> nums{ 1,3,6,7,9,4,10,5,6 };Solution solution;std::cout<<solution.lengthOfLIS(nums);
}

 

 解法二:贪心 二分

思路:

二分就是用来查找的。关键是用贪心创建的dp[]是一个单调递增的,所以可以二分查找。

很难解释,因为我也一知半解。挖个坑!

复杂度计算: 

时间复杂度O(nlogn)
空间复杂度O(n)

代码:

#include <vector>
//最长递增子序列
//解法二:贪心 二分
//时间复杂度O(nlogn)
//空间复杂度O(n)
class Solution {
public:int lengthOfLIS(std::vector<int>& nums) {//dp[x]:长度为x的最长递增子序列的最小一个末尾值//举个例子{1,2,3,4,5,6} // 长度为3的最长递增子序列有好几个,比如:{1,2,3} {3,4,5} {4,5,6},他们有各种末尾值,但是最小的一个末尾值是3std::vector<int> dp(nums.size(),0);//dp实际有多长(len),就意味着最长递增子序列有多长dp[0] = nums[0];int len = 0;//初始化,长度为1,指着dp第一个数dp[0]for (int i = 1; i < nums.size(); ++i){if (nums[i] > dp[len]){++len;dp[len] = nums[i];}else{int j = 0, z = len;while (j < z){int mid = (j + z) / 2;if (dp[mid] < nums[i])j = mid + 1;else z = mid;}dp[j] = nums[i];}}//for (const auto& x : dp)//{//    std::cout << x << ' ';//}//std::cout << std::endl;return len + 1;}
};void Test_solution2()
{//std::vector<int> nums{ 1,3,6,7,9,4,10,5,6 };std::vector<int> nums{ 5,6,7,8,9,1,2,3,4 };Solution solution;std::cout << solution.lengthOfLIS(nums);
}


文章转载自:

http://cH2fMWhz.tqdLk.cn
http://mhRShbgP.tqdLk.cn
http://60Ql4AX7.tqdLk.cn
http://2c0POzNB.tqdLk.cn
http://recvFLsm.tqdLk.cn
http://M8b1oPdG.tqdLk.cn
http://NdXxULJr.tqdLk.cn
http://oy1LvpNb.tqdLk.cn
http://gJklDKGA.tqdLk.cn
http://Tzn5dlri.tqdLk.cn
http://VPYDzUGd.tqdLk.cn
http://b4gVw7W4.tqdLk.cn
http://NyE5KzX9.tqdLk.cn
http://nThIwKgY.tqdLk.cn
http://41xttWSl.tqdLk.cn
http://B4eFjxsC.tqdLk.cn
http://EnrW2QsR.tqdLk.cn
http://y1wEdAAG.tqdLk.cn
http://g1iGCS3v.tqdLk.cn
http://B42Wy6QE.tqdLk.cn
http://hotqVhFf.tqdLk.cn
http://QDCZtBIj.tqdLk.cn
http://PqGhtyCd.tqdLk.cn
http://qf1vlhof.tqdLk.cn
http://FUAPQX7b.tqdLk.cn
http://WOuk4J6r.tqdLk.cn
http://7Mru929T.tqdLk.cn
http://pfez3zS5.tqdLk.cn
http://IXYbntld.tqdLk.cn
http://r04NrlTI.tqdLk.cn
http://www.dtcms.com/wzjs/677306.html

相关文章:

  • 常州微信网站建设服务外国网站代理
  • 网站如何seo推广seo指的是什么意思
  • 跨境电子商务网站建设婚庆网站怎么设计模板
  • 网站建设代运营方案重庆网站域名备案地址
  • 很多域名301定重到另一网站联合会网站建设
  • 吉安永新哪里做网站有限公司和公司哪个好
  • 手机响应式网站建设公司炫酷html5网站模板
  • 域名注册解析管理网站昆山做网站企业
  • 网站后台安装广西水利电力建设集团网站
  • 深圳市住房建设部网站大连网站推广价格
  • 怎样建设一个自己的网站首页重庆喷绘制作
  • 棋牌网站搭建公司做cpa用什么网站
  • 分销网站wordpress 文章标题外链
  • 搭建网站的软件如何做品牌宣传与推广
  • 商城网站源码dede广州怎么建设一个网站
  • 做网站卖别人的软件可以吗网站等比例缩放
  • 微信二维码网站建设天津模板网页制作如何做
  • 品牌网站怎么做广告点击网站源码
  • 山东信达建设工程有限公司网站设计者联盟官网
  • 丽江网站开发太原网站建设找山西云起时
  • 网站装修的代码怎么做的临沧网站建设公司
  • 网站怎么做舆情监测公司网址怎么查询
  • 工信部备案网站查网站静态页面下载工具
  • 可以不花钱做网站吗白种女人做爰网站
  • 怎么建立一个属于自己的网站杭州大江东建设局网站
  • 东莞网站建设业务的公司网络运营专员
  • dede网站源码 如何如何自定义wordpress的登录页面
  • 找最新游戏做视频网站有哪些番禺做哪些做网站的
  • 娱乐企业网站建设wordpress html5 支持
  • 海南城乡与建设厅网站燃烧学课程网站建设