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

糯米

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>
            中文精品视频| 国产精品你懂的| 欧美伊人久久久久久午夜久久久久| 国产精品成人国产乱一区| 一区二区电影免费在线观看| 亚洲一区美女视频在线观看免费| 久久综合婷婷| 久久久久久久综合日本| 欧美成人tv| 国产精品99久久久久久久vr | 国产午夜精品一区二区三区视频 | 久久综合伊人77777尤物| 欧美成人免费在线| 鲁大师成人一区二区三区 | 久久精品成人| 香蕉国产精品偷在线观看不卡| 欧美阿v一级看视频| 国产日韩在线亚洲字幕中文| 亚洲黄色影片| 亚洲国产精品成人综合色在线婷婷 | 欧美激情四色 | 亚洲精品乱码久久久久久久久 | 先锋影音一区二区三区| 国产一区二区av| 激情欧美一区二区三区在线观看| 国产精品久久久久久超碰 | 亚洲激情专区| 亚洲欧美日韩综合| 亚洲狠狠丁香婷婷综合久久久| 久久精品亚洲一区| 久久精品视频在线免费观看| 99re6这里只有精品| 久久九九精品99国产精品| 蜜桃av综合| 伊人色综合久久天天| 久久这里有精品视频| 亚洲黄色免费电影| 久久九九国产精品怡红院| 国产精品丝袜91| 亚洲精品久久久久久下一站| 一区二区三区四区五区在线| 美乳少妇欧美精品| 美日韩精品免费| 在线精品亚洲| 国产精品久久久久久久7电影| 久久精品日韩| 国产精品99久久久久久久久久久久| 久久九九99| 亚洲黄色尤物视频| 麻豆成人在线观看| 国产日本欧美在线观看| 六月婷婷一区| 国产一区二区三区av电影| 欧美影院视频| 亚洲欧美中文另类| 亚洲黄色天堂| 午夜精品在线看| 国产精品露脸自拍| 浪潮色综合久久天堂| 一本色道久久88综合亚洲精品ⅰ | 欧美在线视频观看免费网站| 亚洲电影视频在线| 久久精品中文字幕一区| 影音先锋中文字幕一区二区| 亚洲精品国偷自产在线99热| 国产精品嫩草影院av蜜臀| 亚洲第一网站| 99国产精品久久久| 亚洲免费观看| 国产欧美日韩精品一区| 亚洲日本欧美| 欧美一级大片在线观看| 欧美精品自拍| 欧美激情自拍| 亚洲一区二区三区四区视频 | 久久久久国产精品一区二区| 欧美二区在线观看| 欧美日本一区| 老司机精品视频网站| 蜜桃av噜噜一区| 亚洲欧洲久久| 久久久久久久久久码影片| 美女脱光内衣内裤视频久久网站| 欧美日韩在线免费| 亚洲日本成人| 亚洲三级观看| 久久久蜜臀国产一区二区| 欧美成人免费小视频| 亚洲国产欧美在线人成| 亚洲国产精品视频| 嫩草影视亚洲| 亚洲丰满在线| 久久久久久久久久久久久9999| 欧美激情一区二区三区不卡| 亚洲综合视频在线| 国产区二精品视| 亚洲第一福利在线观看| 一本色道久久综合亚洲91| 亚洲欧美一区二区激情| 日韩视频一区| 欧美成人精品在线观看| 免费成人黄色av| 亚洲精品视频在线观看网站| 欧美亚洲专区| 亚洲福利视频一区| 久久午夜精品一区二区| 一区二区视频免费在线观看| 在线观看不卡| 一区二区三区欧美在线| 国产精品99久久久久久久久| 毛片av中文字幕一区二区| 久久精品国产精品亚洲| 亚洲免费在线精品一区| 国产精品高潮视频| 欧美成人蜜桃| 国产精品一区二区黑丝| 国产亚洲欧美另类中文| 亚洲日本欧美| 亚洲一区www| 亚洲精品欧洲| 久久亚洲精品伦理| 亚洲视频在线观看| 亚洲视频一区二区免费在线观看| 欧美一区三区三区高中清蜜桃| 亚洲精品美女91| 99精品欧美一区二区三区综合在线| 美女视频黄 久久| 欧美激情第五页| 亚洲精品国产拍免费91在线| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美一区二区免费| 亚洲激情av| 欧美日韩国产不卡| 中文国产成人精品| 久久久久久一区| 亚洲国产精品一区二区尤物区| 国产精品国产三级欧美二区 | 亚洲综合精品一区二区| 91久久精品国产91久久性色| 亚洲精品久久在线| 久久精品视频免费| 国产美女精品视频| 久久成年人视频| 久久国产婷婷国产香蕉| 欧美日韩国产va另类| 性色av香蕉一区二区| 免费美女久久99| 在线亚洲一区二区| 国产日韩在线视频| 欧美精品久久99| 亚洲欧美日韩国产另类专区| 久热国产精品视频| 久久人人97超碰人人澡爱香蕉| 免费看黄裸体一级大秀欧美| 中文在线一区| 一区二区在线观看av| 欧美日韩国产精品专区| 久久riav二区三区| 99视频在线观看一区三区| 久久国内精品视频| 99国产精品久久久久久久| 国产欧美亚洲一区| 欧美日本网站| 久久一区二区三区四区| 午夜精品福利电影| 亚洲尤物在线视频观看| 亚洲国产欧美不卡在线观看| 欧美在线一级视频| 亚洲精品护士| 女女同性女同一区二区三区91| 狠狠综合久久| 欧美日韩国产专区| 久久综合久久综合久久| 亚洲影音一区| 日韩一区二区精品在线观看| 亚洲欧美国产视频| 午夜国产精品视频| 99视频一区二区| 亚洲日本中文| 一区二区三区精品视频| 亚洲第一精品影视| 国内精品伊人久久久久av一坑| 欧美体内she精视频在线观看| 男女精品网站| 久久激情网站| 欧美一区二区三区免费看| 一区二区三区国产精华| 亚洲午夜精品| 日韩亚洲视频在线| 亚洲日本无吗高清不卡| 亚洲激情午夜| 亚洲高清久久久| 亚洲欧美日产图| 久久久久国产精品一区二区| 亚洲男人的天堂在线aⅴ视频| 18成人免费观看视频| 美国十次成人| 欧美91视频| 欧美激情 亚洲a∨综合| 欧美在线一级视频|