UVA10405 LCS不同长度
2015-06-06 23:10
225 查看
只不过是两个不同长度的LCS而已
相对比较恶心的地方是题目的输入,读入的字符串可能含有空格,所以只能用gets函数
另外,一个字符数组,读入一次,再读一次,会先把前面的抹掉
对于LCS如果采取的状态d[i][j]代表的是每个字符串i到j的公共子序列的话else那里的状态转移不对?
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int d[1002][1002];
int main()
{
// freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
char str1[2000];
char str2[2000];
while(gets(str1)&&gets(str2))
{
int len1=strlen(str1);
int len2=strlen(str2);
if(len1<len2)
{
for(int i=len1;i<len2;i++)
{
str1[i]=-1;
}
}
else if(len1>len2)
{
for(int i=len2;i<len1;i++)
{
str2[i]=-1;
}
}
int len=len1>len2?len1:len2;
for(int i=0;i<=len;i++)
{
d[i][0]=d[0][i]=0;
}
for(int i=1;i<=len;i++)
{
for(int j=1;j<=len;j++)
{
if(str1[i-1]==str2[j-1])
d[i][j]=d[i-1][j-1]+1;
else
{
d[i][j]=max(d[i-1][j],d[i][j-1]);
}
}
}
printf("%d\n",d[len][len]);
}
return 0;
}
相对比较恶心的地方是题目的输入,读入的字符串可能含有空格,所以只能用gets函数
另外,一个字符数组,读入一次,再读一次,会先把前面的抹掉
对于LCS如果采取的状态d[i][j]代表的是每个字符串i到j的公共子序列的话else那里的状态转移不对?
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int d[1002][1002];
int main()
{
// freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
char str1[2000];
char str2[2000];
while(gets(str1)&&gets(str2))
{
int len1=strlen(str1);
int len2=strlen(str2);
if(len1<len2)
{
for(int i=len1;i<len2;i++)
{
str1[i]=-1;
}
}
else if(len1>len2)
{
for(int i=len2;i<len1;i++)
{
str2[i]=-1;
}
}
int len=len1>len2?len1:len2;
for(int i=0;i<=len;i++)
{
d[i][0]=d[0][i]=0;
}
for(int i=1;i<=len;i++)
{
for(int j=1;j<=len;j++)
{
if(str1[i-1]==str2[j-1])
d[i][j]=d[i-1][j-1]+1;
else
{
d[i][j]=max(d[i-1][j],d[i][j-1]);
}
}
}
printf("%d\n",d[len][len]);
}
return 0;
}
相关文章推荐
- Android中,如何在其他类调用Activity的方法,适用于类似场景
- 从点类派生圆类,再由圆类派生圆柱类
- 【BZOJ】【3670】【NOI2014】动物园
- 【转】编程词汇
- Linux常用命令英文全称与中文解释Linux系统
- MFC六大关键技术之仿真学习笔记(六)
- 微信授权网页登陆,oauth
- fedora linux 非正常关机 导致不能直接启动桌面问题
- Android 4.4 在启动到 ANDROID 闪光字的时候图像错乱的解决过程
- [C++/object c]_[初级]_[std::map容器的使用总结和NSDictionary词典使用总结]
- 搜索引擎搜索技巧
- 第二届SDN大赛--必答题1
- 一起学编程(3--组织与表达)
- 1连接数据库
- mysql修改密码
- C++的字符串分割函数
- DaVinci 开发文档博客记录
- android中Activity的生命周期各回调函数的调用顺序学习心得
- pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新
- Zend Studio For Eclipse 6.1.2 汉化 注册 英文版转化为中文版