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

糯米

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>
            亚洲精品一区二区三区四区高清| 免费视频最近日韩| 欧美成人激情在线| 能在线观看的日韩av| 久久久精品午夜少妇| 久久久精彩视频| 免费欧美网站| 亚洲欧洲综合另类| 亚洲精品日韩激情在线电影| 午夜精品福利电影| 亚洲欧美成人在线| 亚洲欧美999| 久久精品日韩欧美| 欧美大成色www永久网站婷| 欧美激情一区在线观看| 欧美午夜电影在线观看| 国内精品久久久久久 | 亚洲精品乱码久久久久| 99精品国产在热久久婷婷| 亚洲欧美日韩一区二区在线 | 亚洲私拍自拍| 久久爱91午夜羞羞| 欧美精品导航| 国产乱码精品一区二区三区忘忧草 | 欧美激情导航| 国产网站欧美日韩免费精品在线观看 | 精品二区视频| 亚洲一区二区三区精品在线观看| 久久久久se| 99国产精品久久久久久久久久| 欧美中文字幕视频在线观看| 欧美日韩免费| 亚洲欧洲一区二区三区在线观看| 午夜一区二区三区在线观看| 亚洲日韩成人| 久久偷看各类wc女厕嘘嘘偷窃| 欧美日韩一区二区精品| 在线免费高清一区二区三区| 性久久久久久久| 9i看片成人免费高清| 欧美国产亚洲精品久久久8v| 亚洲福利国产| 久久综合亚洲社区| 欧美在线视频不卡| 国产精品国产三级国产专区53 | 亚洲色诱最新| 嫩草成人www欧美| 尤妮丝一区二区裸体视频| 欧美在线不卡视频| 久久国内精品视频| 亚洲国产精品专区久久| 久久久久九九视频| 亚洲欧美成人一区二区在线电影| 欧美激情一区二区三区蜜桃视频| 在线看国产日韩| 男女精品视频| 裸体女人亚洲精品一区| 国产综合在线看| 老司机久久99久久精品播放免费| 校园春色国产精品| 好吊色欧美一区二区三区视频| 久久人人97超碰精品888| 欧美中文在线免费| 国产三级精品三级| 久久国产精品黑丝| 久久成人精品视频| 一区二区视频免费在线观看| 老司机精品视频一区二区三区| 久久精品成人一区二区三区蜜臀| 狠狠色狠狠色综合日日五| 麻豆乱码国产一区二区三区| 久久影视三级福利片| 亚洲黄色成人网| 91久久久一线二线三线品牌| 欧美日韩在线免费| 欧美一区二区日韩| 久久精品青青大伊人av| 亚洲国产成人不卡| 亚洲人成在线播放网站岛国| 国产精品啊啊啊| 久久色在线播放| 欧美第一黄网免费网站| 亚洲一级特黄| 欧美一区二区三区四区在线观看地址 | 麻豆av一区二区三区| 亚洲国产网站| 中文无字幕一区二区三区| 国产日产欧产精品推荐色| 久久亚洲一区| 欧美日韩99| 久久久久国产免费免费| 蘑菇福利视频一区播放| 亚洲一区久久| 美女精品在线| 欧美一区二区视频在线| 欧美成人免费视频| 欧美一区二区视频在线观看| 另类酷文…触手系列精品集v1小说| aa级大片欧美三级| 午夜国产一区| 夜色激情一区二区| 久久精品国产清高在天天线| 亚洲午夜激情网站| 欧美福利视频在线观看| 久久精品一二三区| 亚洲精品一区中文| 国产一区视频观看| 一本久久a久久免费精品不卡| 狠狠色丁香婷综合久久| 亚洲调教视频在线观看| 亚洲精品1234| 久久国产一区| 性感少妇一区| 国产精品a久久久久久| 亚洲国产精品久久91精品| 国产午夜亚洲精品理论片色戒| 亚洲精品一区二区三区99| 在线成人国产| 欧美专区福利在线| 久久精精品视频| 国产九九精品视频| 亚洲女人天堂av| 亚洲一区二区精品视频| 欧美激情五月| 欧美激情精品久久久久久| 激情国产一区| 久久久99爱| 毛片一区二区三区| 极品中文字幕一区| 久久国产精品亚洲77777| 久久久av毛片精品| 国语自产精品视频在线看抢先版结局 | 欧美日韩在线观看一区二区| 亚洲二区视频| 亚洲精品国产视频| 欧美母乳在线| 日韩视频在线观看国产| 一本色道久久综合狠狠躁的推荐| 欧美国产日韩一区二区三区| 亚洲欧洲一区二区三区在线观看| 91久久精品国产91性色tv| 欧美国产亚洲视频| 日韩亚洲一区二区| 亚洲一区二区欧美| 国产精品卡一卡二| 午夜精品99久久免费| 久久久精品国产99久久精品芒果| 国产一区二区三区奇米久涩 | 国产欧美午夜| 久久久一区二区| 亚洲国产精品一区二区尤物区| 亚洲人成久久| 欧美日韩免费观看一区二区三区| 亚洲另类一区二区| 午夜精品在线视频| 精品二区久久| 欧美日韩精品综合| 午夜欧美不卡精品aaaaa| 久久一综合视频| 日韩一本二本av| 国产乱肥老妇国产一区二| 久久伊人免费视频| 夜夜爽www精品| 久久精品国产成人| 亚洲精品一区二区三区樱花| 国产精品老牛| 欧美成人精品在线| 亚洲在线视频网站| 一区二区三区欧美亚洲| 国产精品人人爽人人做我的可爱 | 狠狠88综合久久久久综合网| 久久影视三级福利片| 99精品久久免费看蜜臀剧情介绍| 久久久精品网| 亚洲香蕉在线观看| 亚洲第一区在线观看| 欧美日韩一区二区三区在线看 | 欧美视频精品一区| 久久不射网站| 一区二区三区免费网站| 欧美xart系列高清| 亚洲欧美日韩在线一区| 在线观看亚洲精品| 国产精品裸体一区二区三区| 麻豆成人精品| 亚洲欧美日韩精品久久奇米色影视| 欧美国产乱视频| 午夜综合激情| 国产精品99久久久久久久女警 | 久久精品成人欧美大片古装| 99在线热播精品免费99热| 尤物在线精品| 国产美女精品人人做人人爽| 欧美日韩国产美| 男男成人高潮片免费网站| 欧美在线播放| 午夜精品一区二区三区四区| 日韩网站在线观看| 亚洲黄网站在线观看| 免费亚洲电影在线观看|