dp算法篇Day7

dp算法篇Day7_第1张图片

 "抱紧你的我,比国王富有~"


31、最长定差子序列

(1) 题目解析

dp算法篇Day7_第2张图片

         从题目来看还是很容易理解的,就是找寻数组中构成差值相等的子序列。

        

(2) 算法原理

dp算法篇Day7_第3张图片

class Solution {
public:
    int longestSubsequence(vector& arr, int difference) {
        //  {a,dp[i]}
        unordered_map hash;   
        hash[arr[0]] = 1;

        int ret = 0;
        for(int i=1; i

 


32、子序列问题_最长斐波那契子序列的长度

(1) 题目解析dp算法篇Day7_第4张图片

 

(2) 算法原理

dp算法篇Day7_第5张图片

class Solution {
public:
    int lenLongestFibSubseq(vector& arr) {
        // hash: {元素,下标}
        unordered_map hash;
        for(int i=0; i> dp(n,vector(n,2));
        int ret = 2;
        // 从第二个第三个开始查找
        for(int i=2; i

 


33、最长等差数列 

(1) 题目解析dp算法篇Day7_第6张图片     

        等差数列?这似乎和我们之前做的一个题类似。但是,那个题是给出了差值,但是这道题却没有。因此,这两道题的解法就很不一样了。

(2) 算法原理

dp算法篇Day7_第7张图片

class Solution {
public:
    int longestArithSeqLength(vector& nums) {
        int n = nums.size();
        vector> dp(n,vector(n,2));
        unordered_map hash;
        hash[nums[0]] = 0;

        int ret = 2;
        for(int i=1; i


34、等差数列划分Ⅱ

(1) 题目解析

dp算法篇Day7_第8张图片

 

(2) 算法原理

        dp算法篇Day7_第9张图片

class Solution {
public:
    int numberOfArithmeticSlices(vector& nums) {
        unordered_map> hash;
        int n = nums.size();
        for(int i=0; i> dp(n,vector(n));
        for(int j=2; j

35、回文字串

(1) 题目解析

dp算法篇Day7_第10张图片

 

(2) 算法原理

dp算法篇Day7_第11张图片

class Solution {
public:
    int countSubstrings(string s) {
        int n = s.size();
        vector> dp(n,vector(n));

        int ret = 0;
        // dp[i][j] --> s[i,j];
        // 填表顺序 从下往上填 从左往右
        for(int i=n-1; i>=0; --i) // 下往上
        {
            for(int j=i; j


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~

dp算法篇Day7_第12张图片

 

你可能感兴趣的:(dp动规算法,算法)