和字符串相关的一些问题
来源:互联网 发布:在淘宝进货实体店买 编辑:程序博客网 时间:2024/06/10 11:33
1.求最大公共子序列(LCS)
给定两个字符串,求它们的公共子序列,不要求字符是连续的。
例如:str1=”abcdefg“,str2="abdfkx"。则LCS为”abdf“,长度为4。一般来说,序列可能有多个,但是长度是相同的。
思路:动态规划
c[i][j]=c[i-1][j-1]+1 , 如果str1[i-1]=str2[j-1];
c[i][j]=max{c[i-1][j],c[i][j-1]} ,其他
代码如下:
#include<iostream>using namespace std;void output(int **direction,char *str,int m,int n) { if (m==0 ||n==0) return; if(direction[m][n]==1) { output(direction,str,m-1,n-1); cout<<str[m-1]<<" "; } else if(direction[m][n]==2) output(direction,str,m-1,n); else output(direction,str,m,n-1); }int LCS(char *s1,char *s2,int m,int n){ //距离矩阵 int **matrix=new int*[m+1]; for(int i=0;i<m+1;++i) matrix[i]=new int[n+1]; //方向矩阵 int **direction=new int*[m+1]; for(int i=0;i<m+1;++i) direction[i]=new int[n+1]; //方向矩阵初始值为0 for(int i=0;i<m+1;++i) { for(int j=0;j<n+1;++j) { direction[i][j]=0; } } //将距离矩阵上,左边界设为0 for(int i=0;i<m+1;++i) matrix[i][0]=0; for(int j=0;j<n+1;++j) matrix[0][j]=0; //填充矩阵 for(int i=1;i<=m;++i) { for(int j=1;j<=n;++j) { if(s1[i-1]==s2[j-1]) { matrix[i][j]=matrix[i-1][j-1]+1; direction[i][j]=1; } else if(matrix[i-1][j]>=matrix[i][j-1]) { matrix[i][j]=matrix[i-1][j]; direction[i][j]=2; } else { matrix[i][j]=matrix[i][j-1]; direction[i][j]=3; } } } //调用输出函数 output(direction,s1,m,n); return matrix[m][n];}int main(){ char *str1="acgbfhk"; char *str2="cegefkh"; int len1=strlen(str1); int len2=strlen(str2); int k=LCS(str1,str2,len1,len2); cout<<k<<endl; cin>>k; return 0; }
2.求最大连续子序列和 给定一组数据,有正有负,求最大连续子序列和。 例如:a=[2,-1,3,-3,6,-10,2,3],最大连续子序列是b=[2,-1,3,-3,6],和为7。
代码如下:
#include<iostream>using namespace std;int main(){ int a[]={2,3,-4,-1,5,-6,2,8,-9,2,-5,-4,2,-8,6}; int currsum=0; int maxsum=0; int len=sizeof(a)/sizeof(int); for(int i=0;i<len;i++) { currsum+=a[i]; if(currsum<0) currsum=0; if(currsum>maxsum) maxsum=currsum; } cout<<maxsum<<endl; return maxsum;}
0 0
- 和字符串相关的一些问题
- 和字符串CString类相关的一些常用的函数
- 字符串的相关问题
- 字符串的相关问题
- 与cache相关的一些问题和思考
- 关于初始化 degug 和Release 的一些相关问题
- javascript执行顺序和执行时间的一些相关问题
- facanf相关的一些问题
- localhost的一些相关问题
- 一些线程相关的问题
- gson的一些相关问题
- AlertDialog的一些相关问题
- 线程相关的一些问题
- phpstudy相关的一些问题
- 关于字符串的相关问题
- 两个字符串的相关问题
- 关于char数组和字符串的一些问题
- 一些关于VB中字符串操作的问题和回答
- oracle修改表的表空间
- different ways to QTP maximize browser
- HDU 2795 Billboard
- QuartusII软件异常:Error: Top-level design entity " " is undefined
- 再谈SipDroid
- 和字符串相关的一些问题
- innerHTML和innerText的用法(动态改变网页内容)
- pyqt界面控件
- 初学oracle 满天飞的都是错误代码
- Android ViewGroup.setDescendantFocusability函数
- 3a资源
- PAT-B 1002. 写出这个数 (python)
- 彻底删除jdk并重装jdk和配置环境变量设置后Error: could not open `F:\Java\jre7\lib\jvm.cfg
- Effective C++ 条款12 赋值对象时勿忘其每一个成分