日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

最长公共子序列(稀疏序列)nlogn解法

發(fā)布時(shí)間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最长公共子序列(稀疏序列)nlogn解法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先這種做法只能針對(duì)稀疏序列,

比如這種情況:

abc abacabc

會(huì)輸出5

,,,,就比較尷尬,

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #define lli long long int 7 using namespace std; 8 const int MAXN=4001; 9 const int maxn=0x3f; 10 void read(int &n) 11 { 12 char c='+';int x=0;bool flag=0; 13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} 14 while(c>='0'&&c<='9') 15 x=(x<<1)+(x<<3)+c-48,c=getchar(); 16 flag==1?n=-x:n=x; 17 } 18 int a[MAXN]; 19 int b[MAXN]; 20 int n; 21 int c[MAXN];// 預(yù)處理后的數(shù)組 22 int tot=0; 23 int dp[MAXN]; 24 char aa[MAXN]; 25 char bb[MAXN]; 26 void work() 27 { 28 memset(dp,0x3f,sizeof(dp)); 29 tot=0; 30 memset(c,0,sizeof(c)); 31 memset(a,0,sizeof(a)); 32 memset(b,0,sizeof(b)); 33 for(int i=0;i<strlen(aa);i++) 34 a[i+1]=aa[i]-48; 35 36 for(int i=0;i<strlen(bb);i++) 37 b[i+1]=bb[i]-48; 38 39 for(int i=1;i<=strlen(bb);i++) 40 { 41 for(int j=strlen(aa);j>=1;j--) 42 if(b[i]==a[j]) 43 c[++tot]=j; 44 } 45 //for(int i=1;i<=tot;i++) 46 // printf("%d ",c[i]); 47 for(int i=1;i<=tot;i++) 48 { 49 int p=upper_bound(dp+1,dp+tot+1,c[i])-dp; 50 if(dp[p]==c[i]) 51 continue; 52 dp[p]=c[i]; 53 } 54 } 55 int main() 56 { 57 //ios::sync_with_stdio(false); 58 while(~scanf("%s %s",aa,bb)) 59 { 60 work(); 61 for(int i=1;i<=tot+1;i++) 62 { 63 if(dp[i]>=maxn) 64 { 65 printf("%d\n",i-1); 66 break; 67 } 68 } 69 } 70 71 return 0; 72 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zwfymqz/p/7197365.html

總結(jié)

以上是生活随笔為你收集整理的最长公共子序列(稀疏序列)nlogn解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。