国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

多種成都網(wǎng)站建設(shè)全網(wǎng)推廣外包公司

多種成都網(wǎng)站建設(shè),全網(wǎng)推廣外包公司,做二手衣服的網(wǎng)站,免費(fèi)自制視頻網(wǎng)站文章目錄 動(dòng)態(tài)規(guī)劃(子序列系列)1. 最長(zhǎng)遞增子序列2. 擺動(dòng)序列3. 最長(zhǎng)遞增子序列的個(gè)數(shù)4. 最長(zhǎng)數(shù)對(duì)鏈5. 最長(zhǎng)定差子序列6. 最長(zhǎng)的斐波那契子序列的長(zhǎng)度7. 最長(zhǎng)等差數(shù)列8. 等差數(shù)列劃分 || - 子序列 動(dòng)態(tài)規(guī)劃(子序列系列) 1. 最長(zhǎng)遞…

文章目錄

  • 動(dòng)態(tài)規(guī)劃(子序列系列)
    • 1. 最長(zhǎng)遞增子序列
    • 2. 擺動(dòng)序列
    • 3. 最長(zhǎng)遞增子序列的個(gè)數(shù)
    • 4. 最長(zhǎng)數(shù)對(duì)鏈
    • 5. 最長(zhǎng)定差子序列
    • 6. 最長(zhǎng)的斐波那契子序列的長(zhǎng)度
    • 7. 最長(zhǎng)等差數(shù)列
    • 8. 等差數(shù)列劃分 || - 子序列

動(dòng)態(tài)規(guī)劃(子序列系列)

1. 最長(zhǎng)遞增子序列

題目鏈接

  1. 狀態(tài)表示

    dp[i]表示到 i 位置時(shí),所有子序列當(dāng)中最長(zhǎng)的子序列的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    image-20230731141850644

  3. 初始化

    表中的所有數(shù)據(jù)初始化為1

  4. 填表

    從左到右

  5. 返回值

    返回整個(gè)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. 擺動(dòng)序列

題目鏈接

  1. 狀態(tài)表示

    f[i]表示:以 i 位置為結(jié)尾的所有子序列當(dāng)中,最后一個(gè)位置是上升的最長(zhǎng)擺動(dòng)序列的長(zhǎng)度

    g[i]表示:以 i 位置為結(jié)尾的所有子序列當(dāng)中,最后一個(gè)位置是下降的最長(zhǎng)擺動(dòng)序列的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    gspg67wwyn-1690785946044.png

  3. 初始化

    表中的所有值初始化為1

  4. 填表

    從左到右

  5. 返回值

    返回兩個(gè)表中的最大值

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. 最長(zhǎng)遞增子序列的個(gè)數(shù)

題目鏈接

這里需要用到一種思想:

如何一次遍歷數(shù)組,就可以找到最大數(shù)出現(xiàn)的次數(shù)

代碼實(shí)現(xiàn):

#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. 狀態(tài)表示

    len[i]表示以 i 位置為結(jié)尾所有子序列當(dāng)中,最長(zhǎng)遞增子序列的長(zhǎng)度

    count[i]表示以 i 位置為結(jié)尾所有子序列當(dāng)中,最長(zhǎng)遞增子序列的個(gè)數(shù)

  2. 狀態(tài)轉(zhuǎn)移方程

    c46gcsfr8s-1690789206047.png

  3. 初始化

    所有值都初始化為1

  4. 填表

    從左到右

  5. 返回值

    count表最后一個(gè)

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. 最長(zhǎng)數(shù)對(duì)鏈

題目鏈接

分析:狀態(tài)表示以某個(gè)位置為結(jié)尾的時(shí)候,后面的元素不能影響當(dāng)前的填表,但是這個(gè)題目已經(jīng)影響打了,所有需要將數(shù)組排序

  1. 狀態(tài)表示

    dp[i]表示以 i 位置為結(jié)尾的所有數(shù)對(duì)鏈當(dāng)中,最長(zhǎng)的數(shù)對(duì)鏈的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    wlx9ovlysc-1690791040047.png

  3. 初始化

    所有初始化為1

  4. 填表

    從做到右

  5. 返回值

    返回整個(gè)表的最大值

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. 最長(zhǎng)定差子序列

題目鏈接

  1. 狀態(tài)表示

    dp[i]表示到 i 位置時(shí),所有的子序列當(dāng)中最長(zhǎng)的定差子序列的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    iq9hs9xm3z-1690797357059.png

  3. 初始化

    將第一個(gè)元素對(duì)應(yīng)的dp值初始化為1

  4. 填表

    從左到右

  5. 返回值

    返回整個(gè)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. 最長(zhǎng)的斐波那契子序列的長(zhǎng)度

題目鏈接

  1. 狀態(tài)表示

    dp[i][j]表示以 i j 為結(jié)尾的所有子序列當(dāng)中,最長(zhǎng)的斐波那契數(shù)列的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    uxobxtvs2s-1690810152050.png

    優(yōu)化:將數(shù)組的元素和下標(biāo)綁定,方便查找

  3. 初始化

  4. 填表

  5. 返回值

    返回值可能小于3, 這是應(yīng)該返回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++) // 固定最后一個(gè)位置{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. 最長(zhǎng)等差數(shù)列

題目鏈接

  1. 狀態(tài)表示

    dp[i][j] 表示 以 i j 為結(jié)尾的所有子序列當(dāng)中最長(zhǎng)的等差子序列的長(zhǎng)度

  2. 狀態(tài)轉(zhuǎn)移方程

    n4g2m6wqhs-1690814489176.png

    優(yōu)化:一邊dp一邊保存離它最近元素的下標(biāo),當(dāng) i 位置填完之后將它填入哈希表中即可。所以需要先固定第倒數(shù)第二個(gè)元素,接著固定倒數(shù)第一個(gè)元素

  3. 初始化

  4. 填表

  5. 返回值

    返回是整個(gè)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. 等差數(shù)列劃分 || - 子序列

題目鏈接

  1. 狀態(tài)表示

    dp[i][j]表示以 i j 為是等差數(shù)列的子序列的個(gè)數(shù)

  2. 狀態(tài)表示

    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++) // 固定倒數(shù)第一個(gè){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://aloenet.com.cn/news/35033.html

相關(guān)文章:

  • 珠寶 網(wǎng)站模板免費(fèi)seo快速收錄工具
  • 網(wǎng)站logo怎么修改北京網(wǎng)絡(luò)推廣有哪些公司
  • 建站平臺(tái)選擇建議全球訪問(wèn)量top100網(wǎng)站
  • 網(wǎng)站開(kāi)發(fā)服務(wù)費(fèi)入什么科目重慶網(wǎng)站快速排名提升
  • 西安專業(yè)網(wǎng)站建設(shè)價(jià)格引擎搜索對(duì)人類記憶的影響
  • 門戶網(wǎng)站建設(shè)和檢務(wù)公開(kāi)情況自查報(bào)告免費(fèi)建一個(gè)自己的網(wǎng)站
  • 網(wǎng)站開(kāi)發(fā) 保修期網(wǎng)絡(luò)推廣文案怎么寫(xiě)
  • 會(huì)計(jì)實(shí)帳培訓(xùn)上海百度搜索優(yōu)化
  • 怎么用自己的電腦做網(wǎng)站主機(jī)企業(yè)管理培訓(xùn)課程視頻
  • 別人做的網(wǎng)站怎么打開(kāi)2022網(wǎng)站seo
  • 網(wǎng)站開(kāi)發(fā)人員職位晉升空間深圳龍崗區(qū)布吉街道
  • 小程序開(kāi)發(fā)價(jià)格深圳百度seo公司
  • 自動(dòng)搭建網(wǎng)站源碼優(yōu)就業(yè)seo
  • wordpress 遷移到hexo抖音seo怎么做
  • 哪些網(wǎng)站可以免費(fèi)做推廣呢南沙seo培訓(xùn)
  • 做網(wǎng)站空間放哪些文件夾網(wǎng)頁(yè)模板圖片
  • 點(diǎn)餐網(wǎng)站模板深圳谷歌推廣公司
  • 福州網(wǎng)站開(kāi)發(fā)si7.cc必應(yīng)收錄提交入口
  • 做二手家電網(wǎng)站怎樣?xùn)|莞網(wǎng)絡(luò)優(yōu)化服務(wù)商
  • 網(wǎng)站開(kāi)發(fā)費(fèi)用如何入賬企點(diǎn)下載
  • 專業(yè)企業(yè)網(wǎng)站搭建服務(wù)有創(chuàng)意的網(wǎng)絡(luò)廣告案例
  • 國(guó)外域名的網(wǎng)站怎么做seo快速排名軟件網(wǎng)站
  • 網(wǎng)站制作方案怎么做seo排名優(yōu)化推薦
  • 醫(yī)院網(wǎng)站建設(shè)方案計(jì)劃書(shū)北大青鳥(niǎo)培訓(xùn)機(jī)構(gòu)靠譜嗎
  • 那個(gè)網(wǎng)站可以接做網(wǎng)頁(yè)私活惠州網(wǎng)絡(luò)營(yíng)銷公司
  • 淘寶軟件營(yíng)銷網(wǎng)站建設(shè)品牌推廣策略包括哪些內(nèi)容
  • 快看漫畫(huà)小程序入口關(guān)鍵詞優(yōu)化靠譜推薦
  • 鎮(zhèn)海區(qū)住房和建設(shè)交通局網(wǎng)站友情鏈接名詞解釋
  • 旅游區(qū)網(wǎng)站開(kāi)發(fā)蕭山區(qū)seo關(guān)鍵詞排名
  • 教育行業(yè)網(wǎng)站模板最新軍事戰(zhàn)爭(zhēng)新聞消息