公共最大字串长度
2014-12-10 20:28
204 查看
无题:要求输出最大公共字串长度和执行次数。将来还要输出,,,最大字串。
输入案例:
7 6
ABCBDAB
BDCABA
4 4
ABCD
ABCD
4 5
ABCD
ACBCC
输出答案:
4
4
3
代码写的很笨,先记着怎么写等用到时在仔细研究吧 。
基本思路就是这个表:
有斜杠的表示加一的操作。
my answer:
输入案例:
7 6
ABCBDAB
BDCABA
4 4
ABCD
ABCD
4 5
ABCD
ACBCC
输出答案:
4
4
3
代码写的很笨,先记着怎么写等用到时在仔细研究吧 。
基本思路就是这个表:
y x | A | B | C | B | D | A | B | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
B | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
D | 0 | 0 | 1 | 1 | 1 | 2 | 2 | 2 |
C | 0 | 0 | 1 | 2 | 2 | 2 | 2 | 2 |
A | 0 | 1 | 1 | 2 | 2 | 2 | 3 | 3 |
B | 0 | 1 | 2 | 2 | 3 | 3 | 3 | 4 |
A | 0 | 1 | 2 | 2 | 3 | 3 | 4 | 4 |
有斜杠的表示加一的操作。
my answer:
#include<iostream> #include<cstring> #include<stdio.h> #include<string> #include<cmath> using namespace std; int main() { int m,n; while(cin>>m>>n) { getchar(); /* char a[]={'0','A','B','C','B','D','A','B'}; char b[]={'0','B','D','C','A','B','A'};*/ char a[100],b[100],t; int i,j; for( i=1;i<=m;i++){ cin>>t; a[i]=t; } a[i]='\0'; for( j=1;j<=n;j++){ cin>>t; b[j]=t; } b[j]='\0'; int c[100][100]; int count=0; for( j=0;j<=n;j++){ for( i=0;i<=m;i++){ count++; if(i==0||j==0)c[i][j]=0; else if(a[i]==b[j]){ c[i][j]=c[i-1][j-1]+1; } else{ c[i][j]=max(c[i-1][j],c[i][j-1]); } if(i==m&&j==n){cout<<c[i][j]<<endl;cout<<count<<endl;} } } } return 0; }
相关文章推荐
- 计算两个字符串的最大公共字串的长度,字符不区分大小写(要求计算连续最长字串的长度)
- 求两个字符串最大的公共字串的长度
- 题目标题: 计算两个字符串的最大公共字串的长度,字符不区分大小写
- 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写
- 华为OJ平台 求2个字符串的最大公共字串长度
- 求两个字符串最大的公共字串的长度
- 计算两个字符串的最大公共字符串的长度,字符不区分大小写
- C++实现——LCS-最大公共子串长度
- 求两个字符串公共子序列的最大长度(参考阿里巴巴2015研发笔试)(简单)
- LeetCode系列字符串操作(一)ZigZag输出,寻找最大不重复字串长度。
- 求两个序列的最大公共子序列的长度(递归解法)
- 最大公共字串 矩阵法记录状态
- 最大公共字串(C#实现版)
- 最大公共子串的长度模板
- 两个字符串中最大的公共字串
- 求两个字符串的最大公共字串
- POJ 2774-Long Long Message(后缀数组+高度数组-最大公共子串长度)
- java 递归求求两个串的最大公共子序列的长度
- 求两个字符串的公共子串的最大长度
- poj 3294 Life Forms(n个字符串中 求公共子串长度超过k得最大子串 后缀数组)