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

糯米

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>
            欧美精品免费在线| 亚洲国产日韩一区二区| 亚洲国产毛片完整版| 亚洲精品少妇30p| 亚洲国产清纯| 91久久久久久| 欧美午夜一区| 亚洲欧美日韩国产一区二区三区| 亚洲男女毛片无遮挡| 国产精品久久久久久五月尺| 久久夜色精品国产| 韩国女主播一区二区三区| 欧美午夜性色大片在线观看| 日韩西西人体444www| 欧美一区二区女人| 小辣椒精品导航| 国产女精品视频网站免费| 久久国产精品一区二区三区| 久久综合中文字幕| 亚洲精品小视频| 国产精品丝袜白浆摸在线| 久久久久久久久久码影片| 99伊人成综合| 欧美大片在线看免费观看| 欧美有码在线观看视频| 亚洲婷婷在线| 99精品欧美一区二区三区| 亚洲欧美资源在线| 最新国产の精品合集bt伙计| 在线亚洲一区| 一区二区三区四区五区精品视频| 国产亚洲欧美一区二区三区| 国产酒店精品激情| 国产欧美日韩一区二区三区| 亚洲国产精品传媒在线观看 | 一区二区三区.www| 亚洲每日更新| 久久天天综合| 国产精品视频在线观看| 日韩一级大片| 亚洲电影激情视频网站| 亚洲欧美日本国产专区一区| 老司机67194精品线观看| 亚洲一区免费观看| 亚洲国产精品一区二区www在线| 亚洲黄色性网站| 亚洲日本黄色| 亚洲午夜精品福利| 亚洲欧美中文字幕| 欧美日韩精品在线播放| 国产精品r级在线| 最新亚洲电影| 欧美国产日韩亚洲一区| 亚洲国内欧美| 久久裸体艺术| 国产丝袜一区二区| 一区二区三区四区蜜桃| 久久永久免费| 欧美国产日本韩| 欧美一区二区三区四区在线观看地址| 欧美精品一区二区三区四区| 欧美人妖另类| 亚洲国产日本| 蜜月aⅴ免费一区二区三区| 亚洲黄色成人久久久| 久久久五月天| 国产视频精品va久久久久久| 欧美一级片一区| 亚洲香蕉视频| 国产久一道中文一区| 在线一区二区三区四区| 久久成人精品一区二区三区| 国产精品久线观看视频| 夜夜精品视频| 久久久久久久综合狠狠综合| 亚洲人成久久| 麻豆久久久9性大片| 久久精品国产亚洲一区二区| 亚洲国产高潮在线观看| 久久狠狠婷婷| 久久婷婷综合激情| 亚洲在线不卡| 国产亚洲精品bv在线观看| 性欧美video另类hd性玩具| 亚洲午夜久久久久久久久电影网| 国产精品jizz在线观看美国 | 亚洲欧洲日产国产综合网| 欧美日韩成人激情| 西西人体一区二区| 久久久无码精品亚洲日韩按摩| 亚洲精品资源| 久久久亚洲国产美女国产盗摄| 亚洲欧美精品在线观看| 欧美人与禽猛交乱配| 亚洲欧美国产另类| 欧美一区亚洲| 国产日产欧产精品推荐色| 久久久水蜜桃av免费网站| 欧美大片专区| 亚洲国产综合91精品麻豆| 日韩视频在线观看一区二区| 欧美99久久| 亚洲黄色有码视频| 一区二区三区免费网站| 在线成人黄色| 老司机午夜免费精品视频| 欧美国产精品劲爆| 亚洲精品一区二区三区99| 亚洲天堂成人在线观看| 亚洲高清不卡av| 午夜精品久久久久久久99黑人| 亚洲国产精选| 香蕉精品999视频一区二区| 一区二区三区黄色| 欧美中文字幕不卡| 亚洲一区二区在线看| 一区二区三区视频在线观看| 国产伊人精品| 久久亚洲精品中文字幕冲田杏梨| 欧美成人午夜激情在线| 欧美中文日韩| 久久久www| 亚洲欧美成人一区二区三区| 欧美久久久久免费| 麻豆亚洲精品| 国产亚洲一区二区精品| 一区二区国产精品| 99热这里只有成人精品国产| 久久视频精品在线| 久久久久久色| 国产在线视频欧美| 午夜视频久久久| 欧美一区二区三区电影在线观看| 欧美久久电影| 亚洲欧洲一区二区在线观看 | 国产婷婷一区二区| 亚洲一区二区四区| 亚洲综合视频1区| 欧美日韩在线播放三区四区| 午夜在线一区二区| 国产精品第一区| 久久先锋资源| 红桃视频国产精品| 久久精品国产清高在天天线| 久久久久久久久综合| 国产一区二区主播在线| 欧美制服第一页| 免费在线看一区| 国产精品性做久久久久久| 国产精品99久久久久久久vr| 亚洲欧美久久久| 国产亚洲欧美中文| 久久伊人一区二区| 亚洲精品久久在线| 欧美大片免费观看在线观看网站推荐| 亚洲成色www8888| 国产农村妇女精品一区二区| 亚洲欧美日韩国产综合精品二区| 欧美综合77777色婷婷| 国产在线高清精品| 美女在线一区二区| 久久久噜久噜久久综合| 狠狠色综合色区| 欧美精品国产| 午夜日韩在线观看| 欧美激情一区二区三区在线视频 | 欧美精品一区二区三区一线天视频| 日韩视频一区二区三区在线播放免费观看 | 亚洲福利免费| 亚洲一区二区三区激情| 欧美激情精品久久久| 亚洲国产精品一区二区三区| 欧美国产激情| 欧美亚洲一区二区三区| 欧美成人小视频| 亚洲男人的天堂在线aⅴ视频| 国产一区二区三区视频在线观看| 蜜桃视频一区| 亚洲免费视频在线观看| 欧美激情精品久久久六区热门| 宅男精品视频| 在线观看精品一区| 欧美香蕉大胸在线视频观看| 久久久久久夜| 亚洲欧美亚洲| 日韩一级在线| 亚洲福利在线视频| 久久av在线看| 亚洲欧美国产高清| 99re国产精品| 亚洲二区免费| 国模私拍一区二区三区| 欧美少妇一区| 99亚洲视频| 欧美第一黄网免费网站| 性欧美8khd高清极品| 亚洲无亚洲人成网站77777| 欧美午夜理伦三级在线观看| 久久久国产精品一区| 亚洲欧美日韩国产一区二区三区 |