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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

POJ 1934 Trip 打印出所有的最長公共子序列

這題很難,我只寫出了一個TLE的版本。
后來找了解題報告,只找到了一個,就是這位alpc43大牛的版本:
http://hi.baidu.com/alpc43/blog/item/95184e03a5fef4e209fa932d.html

這個代碼很牛逼!
它的思路是:

1)首先按照常規的方法求出最長公共子序列的長度
也就是用O(MN)的那個動態規劃,結果放在二維數組dp里
dp[i][j] = { 字串a的1~i部分與字串b的1~j部分的最長公共子序列的長度 }
2)求輔助數組
last1[i][j] = { 到下標i為止,字符j在字串a中最后一次出現的下標 }
last2[i][j] = { 到下標i為止,字符j在字串b中最后一次出現的下標 }
3)枚舉最長公共字串的每一個字符
從最后一個字符開始枚舉
比如說現在枚舉最后一個字符是'C'的情況。
那么 'CDCD' 與 'FUCKC' 這兩個字串。
一共有 (0, 2) (0, 4)  (2, 2)  (2. 4) 這四種可能。
很明顯前三個是可以舍棄的,因為第四個優于前三個,為后續的枚舉提供了更大的空間。
last數組正好是用來做這個的。
4)排序輸出
代碼里用了stl的set。
注意,由于剛剛的枚舉過程是針對每個字符,所以是不用判重的。

這個思路非常之牛逼!

#include <stdio.h>
#include 
<string.h>
#include 
<math.h>
#include 
<string>
#include 
<set>;

using namespace std;

const int MAXLEN=100;
char s1[MAXLEN];
char s2[MAXLEN];
int len1,len2;
int dp[MAXLEN][MAXLEN];
int last1[MAXLEN][27];
int last2[MAXLEN][27];
int longest;
char temp[MAXLEN];
set<string> SET;
void input()
{
    scanf(
"%s %s",&s1[1],&s2[1]);

}

inline 
int maxab(int a,int b)
{
    
if(a>b) return a;
    
return b;
}


inline 
void find(int x,int y,int len)
{
    
if(len<=0)
    
{
        
//printf("%s\n",&temp[1]);
        SET.insert(&temp[1]);
        
return ;
    }

    
int i,j;
    
if(x>0 && y>0)
    
{
        
for(i=0;i<26;i++)
        
{
            
int t1=last1[x][i];
            
int t2=last2[y][i];
            
if(dp[t1][t2]==len)
            
{
                temp[len]
='a'+i;
                find(t1
-1,t2-1,len-1);
            }

        }

    }

}

void solve()
{
    
int i,j,k;
    len1
=strlen(&s1[1]);
    len2
=strlen(&s2[1]);
    
for(i=0;i<=len1;i++)
        dp[i][
0]=0;
    
for(i=0;i<=len2;i++)
        dp[
0][i]=0;
    
for(i=1;i<=len1;i++)
        
for(j=1;j<=len2;j++)
        
{
            
if(s1[i]==s2[j])
                dp[i][j]
=dp[i-1][j-1]+1;
            
else dp[i][j]=maxab(dp[i-1][j],dp[i][j-1]);
        }

        longest
=dp[len1][len2];

        
for(j=0;j<26;j++)
            
for(i=0;i<=len1;i++)
                last1[i][j]
=0;
        
for(j=0;j<26;j++)
            
for(i=0;i<=len2;i++)
                last2[i][j]
=0;
        
for(i=1;i<=len1;i++)
        
{
            
for(j=0;j<26;j++)
            
{
                
if(s1[i]=='a'+j)
                    last1[i][j]
=i;
                
else last1[i][j]=last1[i-1][j];
            }

        }

        
for(i=1;i<=len2;i++)
        
{
            
for(j=0;j<26;j++)
            
{
                
if(s2[i]=='a'+j)
                    last2[i][j]
=i;
                
else last2[i][j]=last2[i-1][j];
            }

        }

        temp[longest
+1]='\0';
        find(len1,len2,longest);
        
set<string>::iterator it;
        
for(it=SET.begin();it!=SET.end();it++)
        
{
            printf(
"%s\n",(*it).c_str());
        }

}

int main()
{
    freopen(
"e:\\in.txt""r", stdin);

    input();
    solve();
    
return 0;
}

posted on 2010-09-27 14:30 糯米 閱讀(2026) 評論(0)  編輯 收藏 引用 所屬分類: POJ

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美极品在线视频| 久久国产99| 欧美日韩一区在线观看| 欧美高清一区二区| 欧美区一区二| 欧美视频一区二区三区在线观看| 亚洲精品欧美日韩| 欧美二区乱c少妇| 欧美大片专区| 免费在线一区二区| 欧美日韩国产va另类| 欧美日韩国产小视频在线观看| 欧美日韩另类国产亚洲欧美一级| 欧美私人网站| 国产日韩欧美a| 在线观看一区欧美| 亚洲精品视频在线| 一区二区三区www| 午夜精品一区二区在线观看 | 久久米奇亚洲| 亚洲国产精品一区制服丝袜| 亚洲激情图片小说视频| 亚洲午夜精品在线| 久久五月婷婷丁香社区| 欧美人与性动交a欧美精品| 国产精品jvid在线观看蜜臀| 国内欧美视频一区二区| 一本色道久久综合一区| 欧美一区二区三区四区夜夜大片 | 国产日韩1区| 亚洲精品国产精品国产自| 亚洲午夜激情在线| 久久久久久久久久久成人| 欧美国产欧美综合| 亚洲婷婷国产精品电影人久久| 久久九九全国免费精品观看| 国产精品国产三级国产| 在线播放豆国产99亚洲| 性一交一乱一区二区洋洋av| 欧美大片免费看| 亚洲欧美日韩中文播放| 欧美裸体一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 亚洲免费一在线| 亚洲精品国产精品乱码不99按摩| 99国内精品| 嫩模写真一区二区三区三州| 亚洲精品日韩激情在线电影 | 国产精品二区二区三区| 亚洲人午夜精品| 免费中文日韩| 欧美在线free| 国产精品日本欧美一区二区三区| 亚洲免费观看| 亚洲人成人77777线观看| 性色av香蕉一区二区| 夜夜嗨一区二区| 在线观看国产成人av片| 亚洲一级黄色av| 99成人在线| 欧美极品一区| 亚洲激情欧美激情| 欧美综合77777色婷婷| 日韩视频免费大全中文字幕| 欧美高清免费| 日韩亚洲欧美成人一区| 欧美xxxx在线观看| 久久久国际精品| 国内成人精品一区| 久久激情视频久久| 香港久久久电影| 国产一区999| 麻豆国产va免费精品高清在线| 欧美亚洲三区| 在线播放中文字幕一区| 免费在线亚洲| 欧美激情欧美狂野欧美精品| 亚洲靠逼com| 亚洲国产精品va在看黑人| 欧美mv日韩mv国产网站| 亚洲精品系列| 亚洲视频www| 国产一区二区黄| 欧美电影免费网站| 欧美日韩一区二区三区四区五区| 午夜精品国产更新| 久久精品国产v日韩v亚洲| 亚洲国产你懂的| 99国产精品久久久久久久| 国产欧美在线播放| 亚洲激情电影中文字幕| 国产欧美日韩三区| 欧美激情中文字幕乱码免费| 国产精品护士白丝一区av| 久久免费99精品久久久久久| 欧美激情亚洲综合一区| 香蕉成人伊视频在线观看| 久久视频国产精品免费视频在线| 一区二区高清在线观看| 欧美一区二区三区视频免费| 亚洲精品乱码| 欧美一区二区私人影院日本| 国产精品99久久99久久久二8 | 久久精品青青大伊人av| 99国产精品视频免费观看一公开 | 欧美日韩色综合| 久久人人爽人人爽| 欧美激情影院| 麻豆91精品91久久久的内涵| 欧美午夜精品电影| 亚洲国产成人av在线| 国产午夜精品理论片a级探花| 欧美电影在线免费观看网站| 国产精品亚洲网站| 亚洲丰满在线| 国内久久视频| 亚洲欧美精品在线观看| 久久夜色精品国产亚洲aⅴ| 欧美日产国产成人免费图片| 麻豆精品在线视频| 国产精品视频一二三| 欧美电影在线观看| 国产在线一区二区三区四区 | 欧美国产高清| 精品91在线| 久久成人免费视频| 欧美一区网站| 国产精品视频你懂的| 亚洲国产老妈| 在线看国产日韩| 欧美一区二区三区免费观看| 亚洲欧美精品| 欧美日韩亚洲一区| 亚洲精品一区二区三区在线观看 | 亚洲日韩成人| 亚洲国产婷婷香蕉久久久久久99 | 亚洲欧美日韩久久精品 | 欧美一区二区三区四区在线| 国产精品久久久久aaaa| 一区二区动漫| 亚洲一级在线观看| 欧美日韩精品一二三区| 亚洲精品中文字幕在线观看| 日韩天堂在线视频| 欧美另类一区二区三区| 亚洲最新中文字幕| 欧美在线日韩精品| 一区视频在线看| 欧美电影免费网站| 亚洲精品国产品国语在线app| 一本色道久久综合狠狠躁篇的优点 | 亚洲天堂成人在线观看| 午夜在线不卡| 国产一区再线| 男女激情久久| 亚洲精品在线一区二区| 亚洲欧美在线磁力| 国产专区欧美精品| 欧美成人精品影院| 一本一道久久综合狠狠老精东影业 | 久久久久久高潮国产精品视| 欧美岛国激情| 亚洲一区二区免费在线| 久久av最新网址| 免费亚洲电影在线观看| 日韩视频一区二区三区| 欧美一区二区三区四区夜夜大片| 韩国av一区二区三区| 久久久蜜桃精品| 99精品久久久| 久久久一区二区| 亚洲深夜福利| 黄色国产精品一区二区三区| 欧美精品黄色| 性做久久久久久久免费看| 麻豆精品一区二区综合av | 久久婷婷一区| 亚洲啪啪91| 欧美系列一区| 亚洲欧美一区二区视频| 亚洲国产精品成人综合| 欧美在线免费一级片| 一本久久a久久免费精品不卡| 国产日韩一区欧美| 欧美日韩18| 噜噜噜91成人网| 一区二区日韩免费看| 欧美黑人在线观看| 久久久亚洲午夜电影| 亚洲主播在线播放| 亚洲国产精品123| 国产欧美一区二区精品性| 欧美极品在线播放| 美女啪啪无遮挡免费久久网站| 亚洲欧美日韩综合| 中文久久乱码一区二区| 亚洲激情黄色| 亚洲国产精品国自产拍av秋霞| 麻豆国产精品一区二区三区| 久久激情久久|