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

房产网站内容建设规划百度官方首页

房产网站内容建设规划,百度官方首页,江苏省建设科技发展中心网站简介,哪些做靠谱兼职网站有哪些文章目录 动态规划(子序列系列)1. 最长递增子序列2. 摆动序列3. 最长递增子序列的个数4. 最长数对链5. 最长定差子序列6. 最长的斐波那契子序列的长度7. 最长等差数列8. 等差数列划分 || - 子序列 动态规划(子序列系列) 1. 最长递…

文章目录

  • 动态规划(子序列系列)
    • 1. 最长递增子序列
    • 2. 摆动序列
    • 3. 最长递增子序列的个数
    • 4. 最长数对链
    • 5. 最长定差子序列
    • 6. 最长的斐波那契子序列的长度
    • 7. 最长等差数列
    • 8. 等差数列划分 || - 子序列

动态规划(子序列系列)

1. 最长递增子序列

题目链接

  1. 状态表示

    dp[i]表示到 i 位置时,所有子序列当中最长的子序列的长度

  2. 状态转移方程

    image-20230731141850644

  3. 初始化

    表中的所有数据初始化为1

  4. 填表

    从左到右

  5. 返回值

    返回整个dp表里面最大的值

AC代码:

class Solution 
{
public:int lengthOfLIS(vector<int>& nums) {int n = nums.size();vector<int> dp(n, 1);int ret = 1;for (int i = 1; i < n; i++){for (int j = 0; j < i; j++){if (nums[i] > nums[j]){dp[i] = max(dp[i], dp[j] + 1);}}ret = max(ret, dp[i]);}return ret;}
};

2. 摆动序列

题目链接

  1. 状态表示

    f[i]表示:以 i 位置为结尾的所有子序列当中,最后一个位置是上升的最长摆动序列的长度

    g[i]表示:以 i 位置为结尾的所有子序列当中,最后一个位置是下降的最长摆动序列的长度

  2. 状态转移方程

    gspg67wwyn-1690785946044.png

  3. 初始化

    表中的所有值初始化为1

  4. 填表

    从左到右

  5. 返回值

    返回两个表中的最大值

AC代码:

class Solution 
{
public:int wiggleMaxLength(vector<int>& nums) {int n = nums.size();vector<int> f(n, 1), g(n, 1);int ret = 1;for (int i = 1; i < n; i++){for (int j = 0; j < i; j++){if (nums[i] > nums[j]) f[i] = max(f[i], g[j] + 1);else if (nums[i] < nums[j]) g[i] = max(g[i], f[j] + 1);}ret = max(ret, max(f[i], g[i]));}return ret;}
};

3. 最长递增子序列的个数

题目链接

这里需要用到一种思想:

如何一次遍历数组,就可以找到最大数出现的次数

代码实现:

#include <iostream>using namespace std;int main()
{int arr[] = {2, 3, 1, 234, 43, 342, 234, 5, 34, 43, 8, 342};int n = sizeof(arr)/sizeof(arr[0]);int maxval = 0;int count = 0;for (int i = 0; i < n; i++){if (arr[i] > maxval) maxval = arr[i], count = 1;else if (arr[i] == maxval) count++;}cout << maxval << endl;cout << count << endl;return 0;
}
  1. 状态表示

    len[i]表示以 i 位置为结尾所有子序列当中,最长递增子序列的长度

    count[i]表示以 i 位置为结尾所有子序列当中,最长递增子序列的个数

  2. 状态转移方程

    c46gcsfr8s-1690789206047.png

  3. 初始化

    所有值都初始化为1

  4. 填表

    从左到右

  5. 返回值

    count表最后一个

AC代码:

class Solution 
{
public:int findNumberOfLIS(vector<int>& nums) {int n = nums.size();vector<int> len(n, 1), count(n, 1);int retval = 1, retcount = 1;for (int i = 1; i < n; i++){for (int j = 0; j < i; j++){if (nums[i] > nums[j]){if (len[j] + 1 > len[i]) len[i] = len[j] + 1, count[i] = count[j];else if (len[j] + 1 == len[i]) count[i] += count[j];}}if (retval == len[i]) retcount += count[i];else if (retval < len[i]) retval = len[i], retcount = count[i];}return retcount;}
};

4. 最长数对链

题目链接

分析:状态表示以某个位置为结尾的时候,后面的元素不能影响当前的填表,但是这个题目已经影响打了,所有需要将数组排序

  1. 状态表示

    dp[i]表示以 i 位置为结尾的所有数对链当中,最长的数对链的长度

  2. 状态转移方程

    wlx9ovlysc-1690791040047.png

  3. 初始化

    所有初始化为1

  4. 填表

    从做到右

  5. 返回值

    返回整个表的最大值

AC代码:

class Solution 
{
public:int findLongestChain(vector<vector<int>>& pairs) {sort(pairs.begin(), pairs.end());int n = pairs.size();vector<int> dp(n, 1);int ret = 1;for (int i = 1; i < n; i++){for (int j = 0; j < i; j++){if (pairs[i][0] > pairs[j][1]) {dp[i] = max(dp[i], dp[j] + 1);}}ret = max(ret, dp[i]);}return ret;}
};

5. 最长定差子序列

题目链接

  1. 状态表示

    dp[i]表示到 i 位置时,所有的子序列当中最长的定差子序列的长度

  2. 状态转移方程

    iq9hs9xm3z-1690797357059.png

  3. 初始化

    将第一个元素对应的dp值初始化为1

  4. 填表

    从左到右

  5. 返回值

    返回整个dp表里的最大值

AC代码:

class Solution 
{
public:int longestSubsequence(vector<int>& arr, int difference) {unordered_map<int, int> hash;hash[arr[0]] = 1;int ret = 1;for (int i = 1; i < arr.size(); i++){hash[arr[i]] = hash[arr[i] - difference] + 1;ret = max(ret, hash[arr[i]]);}return ret;}
};

6. 最长的斐波那契子序列的长度

题目链接

  1. 状态表示

    dp[i][j]表示以 i j 为结尾的所有子序列当中,最长的斐波那契数列的长度

  2. 状态转移方程

    uxobxtvs2s-1690810152050.png

    优化:将数组的元素和下标绑定,方便查找

  3. 初始化

  4. 填表

  5. 返回值

    返回值可能小于3, 这是应该返回0

AC代码:

class Solution 
{
public:int lenLongestFibSubseq(vector<int>& arr) {int n = arr.size();unordered_map<int, int> hash;for (int i = 0; i < n; i++) hash[arr[i]] = i;vector<vector<int>> dp(n, vector<int>(n, 2));int ret = 2;for (int j = 2; j < n; j++) // 固定最后一个位置{for (int i = 1; i < j; i++){int a = arr[j] - arr[i];if (a < arr[i] && hash.count(a)){dp[i][j] = dp[hash[a]][i] + 1;}ret = max(ret, dp[i][j]);}}return ret < 3 ? 0 : ret;}
};

7. 最长等差数列

题目链接

  1. 状态表示

    dp[i][j] 表示 以 i j 为结尾的所有子序列当中最长的等差子序列的长度

  2. 状态转移方程

    n4g2m6wqhs-1690814489176.png

    优化:一边dp一边保存离它最近元素的下标,当 i 位置填完之后将它填入哈希表中即可。所以需要先固定第倒数第二个元素,接着固定倒数第一个元素

  3. 初始化

  4. 填表

  5. 返回值

    返回是整个dp表里的最大值

AC代码:

class Solution 
{
public:int longestArithSeqLength(vector<int>& nums) {unordered_map<int, int> hash;int n = nums.size();hash[nums[0]] = 0;vector<vector<int>> dp(n, vector<int>(n, 2));int ret = 2;for (int i = 1; i < n; i++){for (int j = i + 1; j < n; j++){int a = 2 * nums[i] - nums[j];if (hash.count(a)){dp[i][j] = dp[hash[a]][i] + 1;}ret = max(ret, dp[i][j]);}hash[nums[i]] = i;}return ret;}
};

8. 等差数列划分 || - 子序列

题目链接

  1. 状态表示

    dp[i][j]表示以 i j 为是等差数列的子序列的个数

  2. 状态表示

    n4g2m6wqhs-1690814489176.png

  3. 初始化

  4. 填表

  5. 返回值

AC代码:

class Solution 
{
public:int numberOfArithmeticSlices(vector<int>& nums) {int n = nums.size();unordered_map<long long, vector<int>> hash;for (int i = 0; i < n; i++) hash[nums[i]].push_back(i);vector<vector<int>> dp(n, vector<int>(n));int sum = 0;for (int j = 2; j < n; j++) // 固定倒数第一个{for (int i = 1; i < j; i++){long long a = (long long)nums[i] * 2 - nums[j];if (hash.count(a)){for (auto k : hash[a]){if (k < i) dp[i][j] += dp[k][i] + 1;else break;}}sum += dp[i][j];}}return sum;}
};
http://www.hrbkazy.com/news/22256.html

相关文章:

  • 青岛网站建设王道下拉強沈阳关键词seo
  • 大学生做家教靠谱网站外链发布网站
  • 天猫网站是用什么技术做的外贸建站推广公司
  • 做网站页面设计报价湖南有实力seo优化
  • 高要网站制作在哪个平台做推广比较好
  • 南京网站推广公司登封seo公司
  • 自由体网站建设vr全景湘潭seo优化
  • 甘肃兴城建设有限公司网站百家号自媒体平台注册
  • 怎么添加网站内锚点营销推广软件
  • 高清无版权网站seo研究中心官网
  • 美女直接做的网站有哪些在线网站排名工具
  • 纯静态网站 搜索功能网站做优化好还是推广好
  • 做网站策划容易遇到哪些问题怎么在网上做广告
  • wordpress图片打开速度慢seo从入门到精通
  • 四川高速公路建设开发集团有限公司网站推手平台哪个靠谱
  • 网页欣赏关键词优化排名费用
  • 安居客房产官方网站自媒体营销模式有哪些
  • 如果在浏览器上做一网站广告大约需要多少钱西安网站建设维护
  • 做网站纸箱关键词优化技术
  • 东莞seo建站推广电商网络销售是做什么
  • 免费制作app生成器网站网店运营在哪里学比较好些
  • 开源镜像网站怎么做凌哥seo技术博客
  • 最受欢迎的建站平台企业建网站一般要多少钱
  • 58企业网站怎么做网络营销策划推广公司
  • 佛山网站制作网页外链吧
  • 成人用品批发网站一件代发优化设计官网
  • 长沙网站快速优化排名西安网页设计
  • c 怎么做网站百度关键词查询排名
  • 珠海网站推广价格重庆seo推广服务
  • 百度收录提交网站后多久收录2022拉人头最暴利的app