sdut 1008 最大公共子串(求n个字符串的最长公共子串)lcs
来源:互联网 发布:php url传递参数 编辑:程序博客网 时间:2024/04/30 03:55
原题:最长公共字符串
可以看看这个博主写的 sdut 1008 最大公共字串
我等弱渣只能加个注释学习学习。。
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> using namespace std; int leftup=1,left=2,up=3; int sum[110][110]; int pt[110][110]; char s[110][110]; int main() { int f(char s1[110],char s2[110]); int i,j,n,m,t; cin>>t; while(t--) { cin>>n; for(i=0;i<=n-1;i++) { scanf("%s",s[i]); } for(i=1;i<=n-1;i++) { m=f(s[0],s[i]); //一个一个的比比较 if(m==0) { break; } } cout<<m<<endl; } return 0; } int f(char s1[110],char s2[110]) { int l1=strlen(s1); int l2=strlen(s2); char s3[110]; int i,j,n,m,x,key,val,y,len,max; memset(sum,0,sizeof(sum)); memset(pt,0,sizeof(pt)); for(i=1;i<=l1;i++) { for(j=1;j<=l2;j++) { max=0; for(x=1;x<=3;x++) //两种状态 a[i]=b[j]:sum[i-1][j-1]+1 a[i]!=b[j]:sum[i-1][j]||sum[i][j-1] { if(x==1) { if(s1[i-1]==s2[j-1]) { val=sum[i-1][j-1]+1; }else { val=sum[i-1][j-1]; } }else if(x==2) { val=sum[i][j-1]; }else { val=sum[i-1][j]; } if(val>max) { max=val; key=x; // key记录下取值的方式,以便还原最长公共字符串 } } sum[i][j]=max; pt[i][j]=key; } } x=l1; y=l2; len=sum[l1][l2]; len-=1; s3[sum[l1][l2]]='\0'; for(i=1;i<=sum[l1][l2];i++) //按照保存好的key还原字符串 { while(s1[x-1]!=s2[y-1]) { key=pt[x][y]; if(key==1) { x-=1; y-=1; }else if(key==2) { y-=1; }else { x-=1; } } s3[len]=s1[x-1]; len-=1; key=pt[x][y]; if(key==1) { x-=1; y-=1; }else if(key==2) { y-=1; }else { x-=1; } } strcpy(s[0],s3); //将最长公共字符串赋给s[0]以便与后续字符串比较 return sum[l1][l2]; }
0 0
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)lcs
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串的最长公共子串(LCS)
- 求两个字符串最长公共子串LCS(其它)
- LCS求两个字符串的最大公共子串
- LCS算法求最长公共子串
- LCS算法求最长公共子串
- LCS求最长公共子串
- 求两个字符串最长公共子串(LCS问题)
- 求两个字符串最长公共子串LCS
- LCS两个字符串最长公共子串
- 华为上机题:求N个字符串的最长公共子串,字符串长度不超过255。
- 求2个字符串的最长公共子串长度
- 练习54-求N个字符串的最长公共子串
- LCS:最长公共子串
- 最长公共子串LCS
- hdu 1155 Bungee Jumping(物理题——能量守恒)
- 使用WebStorm上传本地项目到GitHub
- poj 3233 Matrix Power Series
- 递归 车票找零 组合数
- bootstrap select multiple
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)lcs
- andriod studio的安装
- 错题总结
- Java的static修饰变量,方法,代码块的初始化顺序
- UVA-514Rails(栈)
- 设计模式入门-单例模式
- Linux下C语言编程基础——Makefile文件学习笔记
- 欢迎使用CSDN-markdown编辑器
- Mac用户福利,学会这些快捷键,瞬间提高逼格