標籤:
最長公用子序列 的 演算法思路 在這裡 點擊進入 將 代碼稍微改動一下 就可以 , 最長公用子序列 是兩個 字串求 公用子序列 , 可以將其中的 一個 改為 從 a 到 z 這樣輸入另一個 就得到了 單調遞增最長子 序列 下面附上題目 和 代碼
最長公用子序列 的 演算法思路 在這裡 點擊進入 將 代碼稍微改動一下 就可以 , 最長公用子序列 是兩個 字串求 公用子序列 , 可以將其中的 一個 改為 從 a 到 z 這樣輸入另一個 就得到了 單調遞增最長子 序列 下面附上題目 和 代碼
最長公用子序列 的 演算法思路 在這裡 點擊進入 將 代碼稍微改動一下 就可以 , 最長公用子序列 是兩個 字串求 公用子序列 , 可以將其中的 一個 改為 從 a 到 z 這樣輸入另一個 就得到了 單調遞增最長子 序列 下面附上題目 和 代碼
最長公用子序列 的 演算法思路 在這裡 點擊進入 將 代碼稍微改動一下 就可以 , 最長公用子序列 是兩個 字串求 公用子序列 , 可以將其中的 一個 改為 從 a 到 z 這樣輸入另一個 就得到了 單調遞增最長子 序列 下面附上題目 和 代碼
只有 一點點的改動
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack>10 #include<string>11 #include<sstream>12 #include<map>13 #include<cctype>14 using namespace std;15 int t,c[30][10005];16 char a[30],b[10005];17 int main()18 {19 scanf("%d",&t);20 for(int i=0;i<=26;i++)21 a[i]=‘a‘+i;22 while(t--)23 {24 scanf("%s",b);25 int lb=strlen(b);26 memset(c,0,sizeof(c));27 for(int i=1;i<=26;i++)28 {29 for(int j=1;j<=lb;j++)30 {31 if(a[i-1]==b[j-1])32 c[i][j]=c[i-1][j-1]+1;33 else34 c[i][j]=c[i][j-1]>c[i-1][j]?c[i][j-1]:c[i-1][j];35 }36 }37 printf("%d\n",c[26][lb]);38 }39 return 0;40 }
單調遞增最長子序列 - 從最長公用子序列到單調遞增最長子序列