博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长公共字序列.cpp
阅读量:5862 次
发布时间:2019-06-19

本文共 1038 字,大约阅读时间需要 3 分钟。

/*By yuan2014/6/21At nwpu.xf1041.最长公共子序列时限:1000ms 内存限制:200000K  总时限:3000ms描写叙述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=
,则还有一序列Z=
是X的子序列是指存在一个严格递增的下标序列
。使得对于全部j=1,2,…,k有:Xij = Zj假设一个序列S即是A的子序列又是B的子序列,则称S是A、B的公共子序列。求A、B全部公共子序列中最长的序列的长度。 输入输入共两行,每行一个由字母和数字组成的字符串,代表序列A、B。A、B的长度不超过200个字符。

输出 一个整数。表示最长各个子序列的长度。 格式:printf("%d\n"); 输入例子 programming contest 输出例子 2 提示 来源 */ #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; char a[201],b[201]; int sum[201][201]; int la,lb; void slove() {int i,j; for(i=1;i<=la;i++) for(j=1;j<=lb;j++) { if(a[i]==b[j]) sum[i][j]=sum[i-1][j-1]+1; else if(sum[i-1][j]>=sum[i][j-1]) sum[i][j]=sum[i-1][j]; else sum[i][j]=sum[i][j-1]; } } int main() {int i,j; memset(a,'0',201); memset(b,'0',201); memset(sum,0,201*201); for(i=1;;i++){ scanf("%c",&a[i]); if(a[i]=='\n') break;} la=i-1; for(j=1;;j++){ scanf("%c",&b[j]); if(b[j]=='\n') break;} lb=j-1; slove(); cout<<sum[la][lb]<<endl; return 0; }</span>

转载地址:http://gwynx.baihongyu.com/

你可能感兴趣的文章
ssh命令详解
查看>>
初学Juery
查看>>
后台页面框架
查看>>
工作之命令小总结(5):ss命令
查看>>
redis_3.0.7_sds.c_dsRemoveFreeSpace()
查看>>
IIS网站出错--未能加载文件或程序集“Agronet.Controls”或它的某一个依赖项。拒绝访问...
查看>>
Java 类的认识(一)
查看>>
ansible学习三(命令和模块)
查看>>
实数的连续性
查看>>
windows 任务计划
查看>>
相对重要性
查看>>
Android在OnCreate中获取控件的宽度和高度
查看>>
EXTJS 4.2 Panel复制
查看>>
IEEE: 安全领域中的大数据分析
查看>>
jQuery控制回车使表单内控件获得焦点
查看>>
Java 动态代理机制分析及扩展,第 1 部分
查看>>
Linux中的shell
查看>>
我的友情链接
查看>>
如何使用TCP/IP与服务器进行通信-一个简单的聊天程序
查看>>
转载 - linux面试题:删除一个目录下的所有文件,但保留一个指定文件
查看>>