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

天下

記錄修行的印記

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

#include "stdafx.h"

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


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

下面是字符串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對(duì)角線序列又要花去一定的時(shí)間。
通過改進(jìn)矩陣的生成方式和設(shè)置標(biāo)記變量,可以省去這部分時(shí)間。
下面是新的矩陣生成方式: 
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)看出來了。當(dāng)字符匹配的時(shí)候,我們并不是簡單的給相應(yīng)元素賦上1,而是賦上其左上角元素的值加一。我們用兩個(gè)標(biāo)記變量來標(biāo)記矩陣中值最大的元素的位置,在矩陣生成的過程中來判斷當(dāng)前生成的元素的值是不是最大的,據(jù)此來改變標(biāo)記變量的值,那么到矩陣完成的時(shí)候,最長匹配子串的位置和長度就已經(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ù)的時(shí)候還要跟左邊的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(
"請(qǐng)輸入第一個(gè)字符串:");
    gets(str1);
    printf(
"請(qǐng)輸入第二個(gè)字符串:");
    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) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 算法

評(píng)論

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

<script>alert("Hello world");<script>  回復(fù)  更多評(píng)論   

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

<<script>>alert("Hello world");<<script>>  回復(fù)  更多評(píng)論   

<2013年3月>
242526272812
3456789
10111213141516
17181920212223
24252627282930
31123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 欧美va天堂| 久久久欧美精品| 国产精品美女久久久久av超清| 欧美精品二区三区四区免费看视频| 久久不见久久见免费视频1| 欧美亚洲综合在线| 亚洲欧美日韩综合aⅴ视频| 亚洲大片av| 麻豆乱码国产一区二区三区| 久久久久欧美| 亚洲国产精品一区在线观看不卡| 男女激情久久| 亚洲精品在线视频| 9人人澡人人爽人人精品| 日韩一区二区久久| 午夜久久资源| 久久黄金**| 欧美人与性动交cc0o| 欧美日韩国产成人在线观看| 国产精品视频一二三| 国产亚洲福利社区一区| 你懂的网址国产 欧美| 欧美日韩另类在线| 欧美视频四区| 亚洲第一搞黄网站| 日韩视频在线播放| 久久九九99视频| 欧美大片一区二区| 亚洲啪啪91| 欧美一区二区三区在线播放| 久久久久综合一区二区三区| 欧美午夜片在线观看| 国产婷婷色一区二区三区四区| 国产精品亚洲美女av网站| 国产最新精品精品你懂的| 99re国产精品| 亚洲人体一区| 欧美一二三视频| 牛牛影视久久网| 亚洲自拍另类| 欧美成人dvd在线视频| 国产深夜精品| 亚洲精品小视频在线观看| 亚洲麻豆av| 久久综合九色九九| 宅男噜噜噜66一区二区66| 欧美aⅴ99久久黑人专区| 国产精品久久久久久久久借妻 | 欧美成人精品1314www| 欧美性猛交xxxx乱大交退制版 | 欧美日韩三区四区| 国产在线欧美日韩| 久久国内精品自在自线400部| 亚洲黄色免费网站| 免费的成人av| 国产日韩精品一区二区三区| 欧美日韩mp4| 亚洲精品视频一区二区三区| 久久久精品国产一区二区三区| 亚洲一二三区在线| 欧美劲爆第一页| 亚洲国产高清一区二区三区| 销魂美女一区二区三区视频在线| 99精品久久免费看蜜臀剧情介绍| 免费av成人在线| 国产精品久久久久一区| 亚洲午夜av在线| 亚洲激情第一页| 欧美日韩1区| 91久久国产精品91久久性色| 欧美福利专区| 巨胸喷奶水www久久久免费动漫| 红桃视频亚洲| 久久―日本道色综合久久| 久久久999精品免费| 国产一区二区久久久| 猫咪成人在线观看| 欧美在线看片| 国产一区日韩一区| 亚洲第一色在线| 欧美a级片网| 中文久久乱码一区二区| 亚洲毛片一区| 亚洲免费观看在线观看| 欧美小视频在线| 亚洲一区视频在线| 亚洲欧美日韩在线不卡| 国产精品久久国产三级国电话系列| 国产伦精品一区二区三区免费| 亚洲一区久久久| 国内偷自视频区视频综合| 欧美一级片一区| 久久久久综合| 日韩图片一区| 蜜臀久久99精品久久久久久9 | 日韩视频欧美视频| 亚洲国产日韩一区二区| 欧美亚一区二区| 性欧美大战久久久久久久久| 久久欧美中文字幕| 亚洲欧洲另类| 午夜精品一区二区在线观看 | 欧美呦呦网站| 亚洲精品视频在线观看网站| 9久re热视频在线精品| 国语自产在线不卡| 欧美激情1区| 国产亚洲精品v| 亚洲欧洲中文日韩久久av乱码| 国产日韩欧美在线播放| 欧美黄色精品| 国产一区二区无遮挡| 亚洲国产第一| 国产在线麻豆精品观看| avtt综合网| 91久久午夜| 午夜精品在线观看| 国产精品一区二区久久久| 欧美激情精品久久久久久变态 | 欧美一区午夜视频在线观看| 免费在线观看精品| 性欧美xxxx视频在线观看| 欧美一区二区在线免费观看| 毛片基地黄久久久久久天堂| 亚洲综合国产激情另类一区| 久久亚洲精品伦理| 亚洲欧美国产精品va在线观看| 久久综合网络一区二区| 欧美一乱一性一交一视频| 欧美激情一区| 老牛影视一区二区三区| 国产精品爱啪在线线免费观看| 欧美激情一区二区三区在线视频观看 | 国产一区二区精品久久| 99精品国产在热久久婷婷| 国产精品入口麻豆原神| 浪潮色综合久久天堂| 国产精品入口夜色视频大尺度 | 亚洲国产欧美一区二区三区同亚洲| 日韩亚洲不卡在线| 欧美激情第三页| 欧美综合国产精品久久丁香| 在线中文字幕不卡| 影音先锋亚洲精品| 亚洲网址在线| 亚洲私人影吧| 欧美成人在线免费观看| 久色成人在线| 欧美日韩高清在线观看| 美女尤物久久精品| 国产视频亚洲精品| 亚洲一级二级在线| 亚洲一区图片| 国产精品av一区二区| 亚洲精品久久久久久久久久久久 | 美女精品视频一区| 国产亚洲第一区| 亚洲男人av电影| 久久av二区| 亚洲美女av黄| 亚洲电影在线| 国产乱子伦一区二区三区国色天香| 亚洲欧洲一区| 亚洲视频综合| 国产精品任我爽爆在线播放| 亚洲手机在线| 午夜免费电影一区在线观看| 欧美日韩伊人| 亚洲无人区一区| 欧美在线播放高清精品| 国产欧美日韩综合一区在线观看| 亚洲欧美成aⅴ人在线观看| 欧美一区2区三区4区公司二百| 欧美成在线视频| 亚洲丁香婷深爱综合| 久久爱www| 在线欧美视频| 欧美日韩国产色视频| 亚洲午夜伦理| 美女视频黄 久久| 夜夜嗨av色综合久久久综合网| 欧美欧美午夜aⅴ在线观看| 99国产精品99久久久久久| 香蕉久久国产| 亚洲美女黄色片| 小处雏高清一区二区三区| 激情久久五月| 久久精品导航| 日韩图片一区| 小处雏高清一区二区三区| 一区二区三区在线免费视频 | 亚洲欧美国产三级| 国产拍揄自揄精品视频麻豆| 老巨人导航500精品| 99在线热播精品免费| 久久精品国产亚洲aⅴ| 在线欧美一区|