动态规划C语言实现之最长公共子序列(LCS)

动态规划中,我曾对于01背包和硬币问题有过一些理解,今天参考了博客上其他同学的经验,完成了最长公共子序列LCS的代码实现。具体的算法内容请移步我的另一篇博文:动态规划入门之:最长公共字符串LCS

代码使用C实现,本质上依赖于算法的两个核心:
1.状态转移方程

2.状态转移表(数组用来存放位置和长度)

上面都是摘自《算法导论》,如果熟悉这两个内容,那么实现起来就方便许多。代码如下:

/***最长公共子序列***/
/*动态规划*/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>

#ifndef size_c
#define size_c 200
#endif // 预定义字符串的长度

#define EQUAL   1   //EQUAL表示c[i][j]是由c[i-1][j-1]+1来的=此时两个序列有相同的字符
#define UP      2   //UP表示c[i
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图灵的猫.

小二,给客官上酒!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值