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

糯米

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>
            久久精品国产一区二区电影| 久久精品国产综合精品| 亚洲色图在线视频| 一本色道久久综合| 一区二区三区四区蜜桃| 亚洲欧美卡通另类91av| 欧美一区国产二区| 久久综合影视| 亚洲人成毛片在线播放| 蜜臀久久99精品久久久画质超高清 | 久久综合久久综合久久| 蜜月aⅴ免费一区二区三区 | 欧美成人免费网站| 欧美色区777第一页| 国产女主播一区| 亚洲国产欧洲综合997久久| 亚洲一二三级电影| 欧美96在线丨欧| 亚洲国产高清自拍| 亚洲欧美国产毛片在线| 久久久久久尹人网香蕉| 欧美日韩国产123区| 国产亚洲精品成人av久久ww| 亚洲三级影院| 欧美在线短视频| 亚洲精品久久久久久久久| 亚洲欧美综合国产精品一区| 欧美成人午夜免费视在线看片| 欧美午夜理伦三级在线观看| 亚洲成在线观看| 午夜亚洲视频| 亚洲激情中文1区| 香蕉久久精品日日躁夜夜躁| 欧美日韩高清一区| 亚洲高清免费在线| 久久久夜色精品亚洲| 亚洲天天影视| 欧美日韩另类综合| 亚洲人永久免费| 久久综合久久88| 亚洲自拍高清| 欧美小视频在线| 亚洲乱码国产乱码精品精天堂 | 久久综合九色九九| 国产视频一区二区在线观看| 亚洲无线观看| 91久久精品日日躁夜夜躁国产| 性色av一区二区三区| 国产精品美女| 午夜久久久久| 亚洲欧美日本国产有色| 国产精品theporn| 一区二区免费看| 99riav国产精品| 欧美理论电影在线观看| 亚洲欧洲日产国产综合网| 免费久久精品视频| 久久久蜜桃精品| 尤物99国产成人精品视频| 久久精品人人爽| 久久精品亚洲一区二区| 禁断一区二区三区在线| 蜜臀a∨国产成人精品| 老司机成人在线视频| 在线观看日韩国产| 免费欧美在线| 欧美激情日韩| 亚洲深夜福利在线| 亚洲网址在线| 国产欧美欧洲在线观看| 久久性天堂网| 欧美成人日本| 一区二区三区高清不卡| 亚洲午夜在线观看| 国产欧美日韩三区| 国产精品电影观看| 国产精品国产一区二区| 亚洲欧美日韩国产一区二区三区| 这里只有精品电影| 国产视频精品网| 美女图片一区二区| 欧美激情影音先锋| 亚洲欧美日本国产专区一区| 亚洲欧美在线x视频| 精品va天堂亚洲国产| 亚洲国产合集| 国产精品夜夜嗨| 麻豆精品91| 欧美粗暴jizz性欧美20| 欧美人体xx| 欧美在线视频导航| 欧美高清在线播放| 午夜一区二区三区不卡视频| 久久精品人人做人人爽| 亚洲人人精品| 欧美一进一出视频| 亚洲精品久久久久久久久| 亚洲夜晚福利在线观看| 亚洲福利av| 亚洲一区日本| 亚洲精品日产精品乱码不卡| 亚洲欧美日韩精品久久久久| 亚洲国产精品悠悠久久琪琪| 亚洲自拍偷拍网址| 亚洲美女网站| 久久视频在线视频| 亚洲欧美中文日韩在线| 欧美大学生性色视频| 久久精品视频在线| 亚洲午夜一区二区三区| 一本一本大道香蕉久在线精品| 久久精品女人| 久久精品国产第一区二区三区| 欧美日韩国产不卡| 欧美黄色一级视频| 黄色国产精品| 亚洲欧美中文另类| 亚洲欧美日本精品| 欧美日韩专区在线| 亚洲日韩中文字幕在线播放| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲综合色视频| 亚洲男人天堂2024| 欧美午夜精品电影| 日韩视频免费观看高清完整版| 亚洲国产日韩在线| 久久嫩草精品久久久精品一| 亚洲欧美国产三级| 欧美日本在线| 亚洲国产欧美日韩另类综合| 在线播放一区| 久久尤物电影视频在线观看| 久热精品视频在线观看一区| 国产视频综合在线| 欧美一区二区网站| 久久久人成影片一区二区三区| 国产亚洲欧美aaaa| 久久国产主播精品| 欧美不卡激情三级在线观看| 极品裸体白嫩激情啪啪国产精品| 欧美伊久线香蕉线新在线| 国产欧美一区视频| 久久露脸国产精品| 国内精品久久久久久久影视蜜臀| 亚洲欧美日韩一区二区三区在线观看| 亚洲尤物精选| 国产乱码精品一区二区三区av| 亚洲午夜成aⅴ人片| 亚洲永久精品大片| 国产嫩草一区二区三区在线观看 | 午夜老司机精品| 久久精品国产一区二区三| 国产午夜精品视频免费不卡69堂| 午夜精品久久| 欧美aa国产视频| 亚洲美女一区| 国产精品美女久久久浪潮软件 | 欧美激情亚洲国产| 艳女tv在线观看国产一区| 香蕉免费一区二区三区在线观看| 国产日韩一区| 久久久青草婷婷精品综合日韩| 欧美高清视频一二三区| 一本色道久久综合狠狠躁篇怎么玩| 国产精品99一区二区| 欧美伊人久久大香线蕉综合69| 免费观看日韩av| 一区二区三区视频在线播放| 国产亚洲日本欧美韩国| 久久久国产精品一区二区中文| 亚洲激情另类| 欧美有码在线观看视频| 亚洲精品美女在线| 国产精品亚洲视频| 欧美肥婆在线| 亚洲综合第一| 亚洲精品激情| 久久一二三区| 亚洲欧美日韩精品久久奇米色影视| 国产一区二区中文字幕免费看| 欧美激情aⅴ一区二区三区| 亚洲欧美日韩一区二区在线| 亚洲人体影院| 久久视频一区二区| 午夜久久电影网| 一本久久a久久免费精品不卡| 国内在线观看一区二区三区 | 亚洲日本电影| 国产伦精品一区| 欧美日韩一区二区在线播放| 久久久精品性| 午夜电影亚洲| 一区二区91| 亚洲日韩欧美视频| 欧美凹凸一区二区三区视频| 久久久久国产一区二区三区四区| 宅男精品视频| 中文欧美字幕免费| 日韩亚洲不卡在线| 亚洲三级免费电影|