青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

動態(tài)規(guī)劃算法(1):lcs算法

#include "stdafx.h"

/*
求兩個字符串的最大公共子串的問題(簡要說明,從另外一個地方轉(zhuǎn)的,和下面一篇合成在一起):
把字符串1(長度m)橫排,串2(長度n)豎排,得到一個m×n的矩陣c,矩陣的每個元素的值如下,如果m[i]=n[j],則c[j][i]=1,否則,c[j][i]=0。然后找出矩陣中連續(xù)是1的對角線最長的一個,則對角線的長度就是公共子串的長度.


LCS問題就是求兩個字符串最長公共子串的問題。解法就是用一個矩陣來記錄兩個字符串中所有位置的兩個字符之間的匹配情況,若是匹配則為1,否則為0。然后求出對角線最長的1序列,其對應的位置就是最長匹配子串的位置。 

下面是字符串babhbxbhhaahbz和字符串hababhbbhzzx的匹配矩陣,前者為X方向的,后者為Y方向的。不難找到,紅色部分是最長的匹配子串。通過查找位置我們得到最長的匹配子串為:babhb 


0 0 0 1 0 0 0 1 1 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 1 0 0 0 0         
1 0 1 0 1 0 1 0 0 0 0 0 1 0 0         
0 1 0 0 0 0 0 0 0 1 1 0 0 0 0         
1 0 1 0 1 0 1 0 0 0 0 0 1 0 0         
0 0 0 1 0 0 0 1 1 0 0 1 0 0 0         
1 0 1 0 1 0 1 0 0 0 0 0 1 0 0         
1 0 1 0 1 0 1 0 0 0 0 0 1 0 0         
0 0 0 1 0 0 0 1 1 0 0 1 0 0 0         
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0         
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0         
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0         
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0         

但是在0和1的矩陣中找最長的1對角線序列又要花去一定的時間。
通過改進矩陣的生成方式和設置標記變量,可以省去這部分時間。
下面是新的矩陣生成方式: 
0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 
0 1 0 0 0 0 0 0 0 2 1 0 0 0 0 
1 0 2 0 1 0 1 0 0 0 0 0 1 0 0 
0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 
1 0 3 0 1 0 1 0 0 0 0 0 1 0 0 
0 0 0 4 0 0 0 2 1 0 0 1 0 0 0 
1 0 1 0 5 0 1 0 0 0 0 0 2 0 0 
1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 
0 0 0 2 0 0 0 2 1 0 0 1 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

不用多說,你大概已經(jīng)看出來了。當字符匹配的時候,我們并不是簡單的給相應元素賦上1,而是賦上其左上角元素的值加一。我們用兩個標記變量來標記矩陣中值最大的元素的位置,在矩陣生成的過程中來判斷當前生成的元素的值是不是最大的,據(jù)此來改變標記變量的值,那么到矩陣完成的時候,最長匹配子串的位置和長度就已經(jīng)出來了。 

這樣做速度比較快,但是花的空間太多。 

*/

char* lcs(char *str1, char *str2,int* p_length)
{
    
int i,j,m,n,length,x,y;

    m 
= strlen(str1)+1;
    n 
= strlen(str2)+1;
    
int **matrix = new int*[m];
    
for(i = 0; i < m; i++)
        matrix[i] 
= new int[n];
    
for(i = 0; i < m; i++)
        matrix[i][
0]=0;//第0列都初始化為0
    for(j = 0; j < n; j++)
        matrix[
0][j]=0;//第0行都初始化為0 

    length 
= -1;
    
*p_length = -1;

    
for(i = 1 ; i < m ; i++)
    {
        
for(j = 1; j < n; j++)
        {
            
if(str1[i-1]==str2[j-1])
            {
                
//只需要跟左上方的matrix[i-1][j-1]比較就可以了
                matrix[i][j]=matrix[i-1][j-1]+1;
            }
            
else
                
//不連續(xù)的時候還要跟左邊的matrix[i][j-1]、上邊的matrix[i-1][j]值比較,這里不需要    
                matrix[i][j]=0;
            }
            
if(matrix[i][j]>length)
            {
                length
=matrix[i][j];
                x
=i;
                y
=j;
            }
        }
    }

    
for(i = 0; i < m; i++)
        delete[] matrix[i];
    delete[] matrix;

    
if (length>0)
    {
        
*p_length = length;
        
return &str1[x-length];
    }
    
return NULL;
}
int main(void)
{
    
char str1[1000],str2[1000],str3[1000];
    
int length;

    printf(
"請輸入第一個字符串:");
    gets(str1);
    printf(
"請輸入第二個字符串:");
    gets(str2);
    
char* pszText = lcs(str1, str2,&length);
    printf(
"最長公共連續(xù)子串的長度為:%d\n",length);
    
if (pszText!=NULL)
    {
        strncpy(str3,pszText,length);
        str3[length] 
= 0;
        printf(
"最長公共連續(xù)子串:%s\n",str3);
    }
    system(
"pause");
    
return 0;
}

posted on 2013-03-16 13:58 天下 閱讀(929) 評論(2)  編輯 收藏 引用 所屬分類: 算法

評論

# re: 動態(tài)規(guī)劃算法(1):lcs算法 2014-08-26 09:20 f

<script>alert("Hello world");<script>  回復  更多評論   

# re: 動態(tài)規(guī)劃算法(1):lcs算法 2014-08-26 09:24 f

<<script>>alert("Hello world");<<script>>  回復  更多評論   

<2015年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導航

統(tǒng)計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产日韩一区| 欧美视频在线一区二区三区| 久久久亚洲午夜电影| 亚洲午夜视频在线| 最新中文字幕亚洲| 在线观看欧美| 亚洲黄色成人网| 伊人久久av导航| 亚洲国产成人精品久久| 国产日韩精品久久久| 国产一区91精品张津瑜| 国产婷婷色一区二区三区| 国产人成精品一区二区三| 国产在线精品一区二区中文| 国产原创一区二区| 91久久黄色| 99视频超级精品| 国产精品午夜在线| 国内精品伊人久久久久av一坑| 国产欧美日韩免费看aⅴ视频| 亚洲一区精品在线| 日韩一级片网址| 国产精品极品美女粉嫩高清在线 | 久久久久久色| 亚洲欧美日韩国产综合在线| 久久久99国产精品免费| 久久久另类综合| 欧美激情91| 一区二区国产在线观看| 亚洲欧美日韩精品一区二区| 两个人的视频www国产精品| 欧美精品七区| 国产一区二区三区久久悠悠色av| 国产亚洲精品久久久久动| 亚洲夫妻自拍| 亚洲一区二区三区视频| 久久久av网站| 亚洲高清网站| 中文精品视频| 久久蜜桃av一区精品变态类天堂| 欧美精品激情| 在线视频中文亚洲| 国产精品免费在线 | 六月婷婷久久| 国产香蕉久久精品综合网| 亚洲大胆视频| 亚洲国产精品第一区二区三区| 香蕉久久夜色精品国产使用方法| 久久尤物视频| 午夜精品国产更新| 欧美紧缚bdsm在线视频| 极品尤物一区二区三区| 亚洲在线日韩| 亚洲国产高清一区二区三区| 午夜精品久久久久久久久久久久久 | 欧美视频一区二区三区四区| 91久久精品日日躁夜夜躁欧美| 一本久久a久久免费精品不卡| 在线看欧美日韩| 久色婷婷小香蕉久久| 亚洲一区二区三区久久| 欧美女同在线视频| 亚洲国产91精品在线观看| 久久一区二区视频| 亚洲一区在线观看视频| 国产精品久久777777毛茸茸| 亚洲人成在线播放| 91久久精品国产91久久性色| 久久九九全国免费精品观看| 欧美久久99| 亚洲免费成人| 亚洲第一精品福利| 欧美激情综合色| 亚洲国产欧洲综合997久久| 欧美成人一区二区| 久久这里有精品视频| 在线免费一区三区| 免费欧美在线| 欧美一区二区三区日韩视频| 国产精品久久久久一区二区三区| 亚洲一区二区三区视频| 一本久道久久综合狠狠爱| 欧美日韩高清在线| 在线视频你懂得一区| 亚洲精品女人| 久久综合久久综合久久综合| 韩国三级电影久久久久久| 久久久久久亚洲精品不卡4k岛国| 亚洲影院在线观看| 女同性一区二区三区人了人一| 亚洲欧美成人网| 经典三级久久| 欧美激情视频一区二区三区免费| 欧美人与禽猛交乱配| 国产精品99久久不卡二区| 亚洲欧美日韩一区二区在线 | 国产欧美日韩激情| 午夜一区二区三区在线观看| 夜夜嗨av一区二区三区| 国产亚洲欧洲一区高清在线观看| 欧美影院成年免费版| 久久福利一区| 久久免费国产精品| 亚洲三级性片| 亚洲欧美日韩国产综合| 国产一区二区三区观看| 亚洲国产日韩在线| 欧美性淫爽ww久久久久无| 久久久久久尹人网香蕉| 可以看av的网站久久看| 亚洲无亚洲人成网站77777| 亚洲欧美伊人| 亚洲精品一区在线观看| 一本高清dvd不卡在线观看| 在线不卡a资源高清| 亚洲精品日韩激情在线电影| 国产一区欧美| 亚洲精品国产精品国自产在线| 国产精品一二三四| 亚洲夫妻自拍| 很黄很黄激情成人| 中文精品99久久国产香蕉| 日韩视频免费观看高清完整版| 亚洲午夜视频| 国产女人18毛片水18精品| 日韩亚洲欧美综合| 国产主播喷水一区二区| 亚洲欧洲综合| 国产亚洲综合精品| 午夜伦理片一区| 亚洲理论电影网| 亚洲一级黄色片| 日韩午夜三级在线| 久久久久欧美精品| 亚洲无亚洲人成网站77777| 久久岛国电影| 午夜精品久久久久久久99黑人| 久久婷婷国产综合精品青草| 欧美在线免费播放| 欧美日韩人人澡狠狠躁视频| 亚洲电影在线免费观看| 国产视频一区二区在线观看| 一区二区三区www| 亚洲精品欧美日韩| 欧美另类极品videosbest最新版本| 国产精品theporn| 久久精品国产99精品国产亚洲性色| 欧美黄污视频| 性做久久久久久免费观看欧美| 国产精品伦子伦免费视频| 99综合电影在线视频| 99亚洲一区二区| 欧美日韩成人综合| 欧美大胆人体视频| 在线观看视频日韩| 久久久噜噜噜久久久| 久久久久久久久久久久久女国产乱| 国产精品第三页| 一区二区三区欧美日韩| 国内精品美女av在线播放| 亚洲福利免费| 亚洲黄色影片| 日韩一区二区电影网| 欧美~级网站不卡| 亚洲乱码国产乱码精品精可以看 | 欧美精品九九| 亚洲黄色av| 欧美日韩国产综合视频在线观看中文 | 国产偷自视频区视频一区二区| 亚洲精品综合| 国产精品夜夜嗨| 午夜激情综合网| 亚洲欧洲日本专区| 国产精品成人免费精品自在线观看| 欧美激情一区二区三区全黄 | 91久久精品日日躁夜夜躁国产| 久久男人资源视频| 亚洲国产视频直播| 亚洲一区二区在线| **性色生活片久久毛片| 欧美成人福利视频| 亚洲欧美日韩成人| 麻豆国产精品va在线观看不卡| 一区二区日韩伦理片| 国产精品乱码久久久久久| 鲁大师影院一区二区三区| 91久久精品一区二区别| 欧美中文字幕精品| 亚洲国产三级| 国产在线成人| 欧美日韩在线视频首页| 久久久久久亚洲综合影院红桃| 91久久精品一区| 快射av在线播放一区| 一级日韩一区在线观看| 在线电影院国产精品| 国产精品激情| 欧美日韩一区二区免费在线观看| 午夜国产精品影院在线观看| 日韩午夜激情电影|