1.11学習ブログ

今日は分割統治問題とdp問題を要約します

分割統治問題行列検索のアイデアの並べ替え問題
ここに画像の説明を挿入
のサイズを縮小(縮小)
行列の左下隅にmatrix [i] [j]を設定します。これは、i番目の行の最小値と最大値です。 j番目の列。target
<matrix [i] [j](i番目の行の最小値未満)の場合、i番目の行を除外し、i-
if target> matrix [i] [j]とします。 (j番目の列の最大値より大きい)次に、j番目の列を除外し
、ターゲットが見つかるまで、またはすべてのランクが除外されるまで、j ++を2〜3ループさせます。

コードの一部は次のとおりです。


bool searchMatrix(int** matrix, int matrixSize, int matrixColSize, int target){
    
    
int i=matrixSize-1;
int k=matrixColSize;
int j=0;
for(;i>=0&&j<k;){
    
    
    if(target==matrix[i][j])return true;
    if(target<matrix[i][j])i--;
    else{
    
    j++;}
}
return false;
}

dpトピック:最長共通部分列
ここに画像の説明を挿入
ここに画像の説明を挿入
、これは大物による典型的なアルゴリズムの要約と、labuladongのアルゴリズムの推測です

借鉴题解中的分享,对于本题来说第一步要做的就是定义dp数组的含义,首先我们来看题目,
题目要求找出两个字符串的最长公共子序列,一般对于在两个字符串,
或者是能拆解成两个字符串的问题当中,我们都定义一个二维dp数组。
dp[i][j]:表示在字符串s[0...i]中和字符串s[0...j]中最长公共子序列的长度为dp[i][j]

サンプルのDp図
たとえば、最初の列を空の文字列として表します。「」と「babcde」の間の最長の共通部分文字列の長さは0です。

次に、状態遷移方程式を探し始めます。これは最も重要なステップであり、上司によって書かれた最もエキサイティングなステップだと思います。共通のサブシーケンスが必要であり、共通のサブシーケンス内のすべての文字はs1とs2からのものである必要があります。逆に言えば、s1とs2の文字は、共通のサブシーケンスにあるか、共通のサブシーケンスにないかのどちらかです。

s1 [i] == s2 [j]、つまりinであるため、現在の結果は+1より前に入力されなかった文字列の結果と等しくなります
。s1[i]!= s2 [j]は、少なくとも1つを意味します。それらのうちの不在(または**ない**が少なくとも1つある(またはs1 [i]がない、またはない、またはs_2 [j] $がない、またはない)を意味する)、現在の結果は次のようになります。前の結果は、最大値を
取りました。これは、数学的な誘導も意味します。dp[i] [j-1]を計算したとすると、dp [i] [j]をどのように計算しますか(つまり、新しいものと同等です)。文字列内の文字)上記に基づいて直接書き込むことができます

コードの一部は次のとおりです。

int max(int a,int b){
    
    
    if(a<b)return b;
    else{
    
    return a;}
}
int longestCommonSubsequence(char * text1, char * text2){
    
    
int n=strlen(text1),m=strlen(text2);
int dp[n+1][m+1];
for(int i=0;i<n+1;i++)dp[i][0]=0;
for(int i=0;i<m+1;i++)dp[0][i]=0;
for(int i=1;i<n+1;i++){
    
    
    for(int j=1;j<m+1;j++){
    
    
        if(text1[i-1]==text2[j-1]){
    
    
            dp[i][j]=dp[i-1][j-1]+1;
        }
        else{
    
    
            dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
        }
    }
}
return dp[n][m];
}

今日、私は分割統治法のアイデアに触れ、dpを統合しました。ボスの上記のアルゴリズムの概要をあなたと共有する必要があると思います。それはボスの問題の解決策を見ているときに私が見たものです。みんな一緒に進歩!

おすすめ

転載: blog.csdn.net/weixin_47529865/article/details/112482589