最长回文子串、回文子序列、公共子序列
来源:互联网 发布:青岛seo整站优化方案 编辑:程序博客网 时间:2024/05/16 01:16
/*一、最长回文子串(连续)1.manacher算法(见前面)2.动态规划*/bool p[100][100];for(int i=0;i<length;++i){p[i][i]==true;if(i<length-1 && s[i]==s[i+1]){p[i][i+1]=true;start=i;maxlength=2;}}for(int len=3;len<=length;++len)for(int j=0;j<length-len+1;++j){int k=j+len-1;if(s[j]==s[k] && p[j+1][k-1]){p[j][k]=true;start=j;maxlength=len;}}if(maxlength>=2)reutrn s.substr(start,maxlength);//?/*二、最长回文子序列(不连续)1.递归2.动态规划3.将字符串反转,再求两个字符串的最长公共子序列LCS*/int lps(char *s,int i,int j){if(i==j) return 1;if(i>j) return 0;if(s[i]==s[j])return lps(s,i+1,j-1)+2;elsereturn max(lps(s,i,j-1),lps(s,i+1,j));}int lpsdp(char *s,int n){int dp[n][n],tmp;int i,j;memset(dp,0,sizeof(dp));for(i=0;i<n;++i) dp[i][i]==1;for(i=1;i<n;++i)//表示i+1长的字符串{tmp = 0;for(j=0;j+i<n;++j){if(s[j]==s[j+i])tmp=2+dp[j+1][j+i-1];elsetmp=max(dp[j+1][j+i],dp[j][j+i-1]);dp[j][j+i]=tmp;}}return dp[0][n-1];}/*三、最长公共子序列(不连续)int a[100];int b[100];int lena;int lenb;1.递归2.动态规划*/int lcs(int i,int j){if(i>=lena || j>=lenb)return 0;if(a[i]==b[j])return 1+lcs(i+1,j+1);elsereturn max(lcs(i+1,j),lcs(i,j+1));}int num[100][100];//记录之间的最大值,下标从1开始int flag[100][100];//记录标记移动方向void lcsdp(){for(i=1;i<=lena;++i)for(j=1;j<=lenb;++j){if(a[i-1]==b[j-1]){num[i][j]=num[i-1][j-1]+1;flag[i][j]=1;//斜向下移动}else if(num[i][j-1]>num[i-1][j]){num[i][j]=num[i][j-1];flag[i][j]=2;//向右移动}else{num[i][j]=num[i-1][j];flag[i][j]=3;//向下移动}}//num[lena][lenb]为最大值}//获取最长公共子序列void getlcs(){char res[100];int k=0;int i=lena,j=lenb;while(i>0 && j>0){if(flag[i][j]==1){res[k++]=a[i-1];i--;j--;}else if(flag[i][j]==2)j--;elsei--;}//for(i=k-1;i>=0;--i)//cout<<res[i];}
0 0
- 最长回文子串、回文子序列、公共子序列
- 最长公共子串、最长公共子序列、最长回文子串、最长回文子序列、回文子串个数
- 最长公共回文子序列
- 最长公共子串、最长公共子序列、最长递增子序列、最长回文子串
- 最长回文子序列+最长公共子序列+最长连续回文子串
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文串子序列
- 【DP】 最长公共回文子序列
- 【jzoj4889】【最长公共回文子序列】【字符串】
- 最长公共回文子序列ah
- 回文字符串【最长公共子序列】【DP】
- 构造回文 && 最长公共子序列
- SVN的简单使用
- Eclipse上安装GIT插件EGit
- box-shadow 还可以这么写
- Openstack学习笔记(六)-Ubuntu下安装JDK和Eclipse
- Servlet入门(二)延伸--深入研究Servlet线程安全性问题
- 最长回文子串、回文子序列、公共子序列
- JENA入门----节点与关系
- 真机运行、手机运行、真机联调常见问题
- c++基础,长期更新
- Two Sum
- mysql中运算符小结
- Vector和Set类
- 读收获不止oracle--表设计有感
- java连接MYSQL