求两个字符串的最长公共连续子序列的长度
来源:互联网 发布:平面设计好还是美工好 编辑:程序博客网 时间:2024/06/07 19:08
2017年校招全国统一模拟笔试(第二场)编程题集合的一道题,求两个字符串的最长公共连续子序列的长度
题目地址第一题
下面是c++代码
#include <bits/stdc++.h>#define ll long long#define inf 0x3f3f3f3f#define mem(a,b) memset(a,b,sizeof(a))using namespace std;int m[100][100];int main(){//freopen("1.txt","r",stdin); int i,j,k1,k2,n,ans=0,max; string s1,s2; getline(cin,s1); getline(cin,s2); k1=s1.size(); k2=s2.size(); mem(m,0); for(i=0;i<k1;i++) for(j=0;j<k2;j++) if(s1[i]==s2[j])m[i][j]=1; for(i=0;i<k1;i++){ max=0; for(j=0;j<k2;j++){ if(m[i+j][j]==1)max++; else max=0; if(max>ans)ans=max; } }//统计从左边第一列开始的斜向右下斜线的最大值 for(i=0;i<k2;i++){ max=0; for(j=0;j<k1;j++){ if(m[j][i+j]==1)max++; else max=0; if(max>ans)ans=max; } }//统计从顶部第一行开始的斜向右下斜线的最大值 printf("%d\n",ans); /* for(i=0;i<k1;i++){ for(j=0;j<k2;j++) printf("%d ",m[i][j]); printf("\n"); } */ return 0;}
大体思路
假设两个字符串str1和str2,长度分别为m和n,则构建一个m*n的矩阵matrix,
matrix[i][j]==1表示字符串str1中第i个字符与str2中第j个字符相等,为0则不相等。 统计矩阵matrix中每条斜线上1的连续最大个数就是str1和str2中公共连续子串的最大长度
例如:str1: abcde str2: abgde
斜线上连续的1的最大个数为2,所以最长公共连续子串长度为2
matrix = [ 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 ]
阅读全文
0 0
- 求两个字符串的最长公共连续子序列的长度
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- 求两个字符串中最长连续子字符串的长度
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 求两个字符串的最长的连续公共子串
- 两个字符串的最长公共子序列(可以不连续)
- 找两个字符串的最长公共子序列的长度
- 两个字符串的最长公共子序列的长度
- 求两个字符串的最长连续公共子串
- 动态规划求两个字符串的连续最长公共子序列
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子串的长度
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串的最长公共子序列的长度(动态规划)
- 求两个字符串中的最长公共子串的长度
- 求两个字符串公共子串的最长长度
- python核心编程第二版第二章习题
- Maven学习总结(11)——Maven 项目中pom.xml详解
- I2C时序图
- pptp vpn记录用户登录和流量信息
- leetcode two-sum
- 求两个字符串的最长公共连续子序列的长度
- 2015年京胜杯删数!删数
- fedora 14 root登陆修改方法
- linux-shell脚本编程基本用法1
- Android添加USB连接提示音(SettingsProvider,PowerUI)
- Java -- 队列(模拟银行的排队办理业务)
- Python机器学习(03)
- MyEclipse中的web项目如何正确导入到Eclipse中运行
- 直线生成算法的实现:分别利用DDA算法、中点Bresenham算法和改进的Bresenham算法扫描转换直线段P1P2