joj1968
来源:互联网 发布:ping和rtt区别知乎 编辑:程序博客网 时间:2024/06/15 16:18
1968: Common Subsequence
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., zk > is a subsequence of X if there exists a strictly increasing sequence < i1, i2, ..., ik > of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = < a, b, f, c > is a subsequence of X = < a, b, c, f, b, c > with index sequence < 1, 2, 4, 6 >. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.
Sample Input
abcfbc abfcabprogramming contest abcd mnp
Sample Output
420
Submit / Problem List / Status / Discuss
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
char str1[500];
char str2[600];
int f[500][500];
int main()
{
while(scanf("%s%s",str1+1,str2+1)==2)
{
int len1=strlen(str1+1);
int len2=strlen(str2+1);
for(int i=0;i<=len1;i++)f[i][0]=0;
for(int i=0;i<=len2;i++)f[0][i]=0;
for(int i=1;i<=len1;i++)
{
for(int j=1;j<=len2;j++)
{
if(str1[i]==str2[j])
{
f[i][j]=f[i-1][j-1]+1;
}
else
{
if(f[i-1][j]>f[i][j-1])
{
f[i][j]=f[i-1][j];
}
else
{
f[i][j]=f[i][j-1];
}
}
}
}
cout<<f[len1][len2]<<endl;
}
return 0;
}
这是一个字符串匹配的问题。f[i][j]代表第一个子串前i个字符与第二个子串前j个字符中最大的匹配长度。。
当str1[i]=str2[j]的时候f[i][j]=f[i-1][j-1]+1;否则f[i][j]=max(f[i-1][j],f[i][j-1])
- joj1968
- C语言:typedef
- Cocos2d-x Box2D debugDraw
- ORA-22160 并非是稀梳数组引起来的
- 红帽Linux中出现”This system is not registered with RHN”的解决方案
- poj 1442 第K小数(输入的数可能有重复)
- joj1968
- ASP.Net 中 应用JSON总结
- linux下非阻塞的tcp研究
- ExtJs4.0+ASP.net(c#) 操作XML文件
- gold_hash_map vs google sparse map by google's time_hash_map.cc
- Oracle序列使用:建立、删除
- 观察者模式实现
- linux终端中文软件zhcon0.2.6的安装及使用
- linux非阻塞的socket EGGAIN的错误处理