博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj(1458)(最长公共子序列)
阅读量:6703 次
发布时间:2019-06-25

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

  hot3.png

 
44
#include
"
iostream
"
45
#define
M 1000
//
适合数据量小的字符串,那么字符串长度过大时又如何处理?!
46
using
namespace
std;
47
int
c[M][M];
48
int
Max(
int
a ,
int
b)
49
{
50
return
a
>
b
?
a:b;
51
}
52
void
LCD(
char
aa[],
char
bb[],
int
x,
int
y)
//
核心
53
{
54
int
i,j;
55
for
(i
=
0
;i
<=
x;i
++
)
56
c[i][
0
]
=
0
;
57
for
(j
=
0
;j
<=
y;j
++
)
58
c[
0
][j]
=
0
;
59
60
for
(i
=
1
;i
<=
x;i
++
)
61
for
(j
=
1
;j
<=
y;j
++
)
62
{
63
if
(aa[i
-
1
]
==
bb[j
-
1
]) c[i][j]
=
c[i
-
1
][j
-
1
]
+
1
;
//
将前一行前一列的值+1(即对角线上前一个点加1,目的是保证了所找到的字符串是最大的)
64
else
c[i][j]
=
Max(c[i][j
-
1
],c[i
-
1
][j]);
//
在不相等的情况下,将同列的前一行或者同行的前一列中选一个最大数赋给c[i][j],从而保证了下一次循环可以依然按照同样的方式进行;
65
}
66
}
67
int
main()
68
{
69
char
a[M],b[M];
70
int
L1,L2;
71
while
(cin
>>
a
>>
b)
72
{
73
L1
=
strlen(a);
74
L2
=
strlen(b);
75
LCD(a,b,L1,L2);
76
cout
<<
c[L1][L2]
<<
endl;
77
}
78
return
0
;
79
}

转载于:https://my.oschina.net/garyun/blog/602970

你可能感兴趣的文章
《第一行代码——Android》
查看>>
POJ 3358 Period of an Infinite Binary Expansion
查看>>
微积分学习笔记三:定积分
查看>>
javascript有声调的汉字注音字典(兼容各浏览器)
查看>>
sql: 生日赠品中的相关算法
查看>>
卷积神经网络(CNN)
查看>>
分布式文件系统应用(下篇 实践)
查看>>
一起谈.NET技术,.NET 4 并行(多核)编程系列之二 从Task开始
查看>>
PHP框架 Raxan 1.0 最终版发布
查看>>
图像的一般格式
查看>>
面向对象重写(override)与重载(overload)区别
查看>>
C#接口-接口作用
查看>>
POJ 2479 Maximum sum (动态规划)
查看>>
PHP——上传头像(2)
查看>>
01-Java基础知识:数据类型与变量、标识符、运算符、表达式
查看>>
连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法
查看>>
【转】iOS开发笔记--识别单击还是双击
查看>>
手工创建非singleton 的TopComponent
查看>>
分享一个自己写的table表格排序js插件(高效简洁)
查看>>
三十二、Android上传文件至服务器
查看>>