博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 10405 - Longest Common Subsequence(最长公共子序列)
阅读量:4509 次
发布时间:2019-06-08

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

题目:

经典的LCS水题。。。

用来入门是极好的。也是我的第一道dp题。

但是一个非常坑的点是它的数据好像有单数组的,这意味着如果用while(gets(a))这样去做循环的话可能会出错,必须用两个串一起读入才行,这点上我被坑了几次。。。但貌似有人也用读单串去写却没有出错(),不知道是我判断错误还是其他问题。。。

还有一点,第一次做dp题,搞懂算法后却不知道如何读入字符串才能让数组第一位是0,最后是参考了别人代码后用gets(a+1)这种形式读入字符串,以及strlen(a+1)获取字符串长度,豁然开朗啊。

后来我又发现了其实可以正常去读入,在dp的时候对储存数组处理时下标都多+1就行了。。。

#include
#include
#define MAXN 1010char a[MAXN], b[MAXN];int c[MAXN][MAXN];int max(int a, int b){ if (a > b) return a; return b;}int main(){ while (gets(a + 1) && gets(b + 1)) { int al = strlen (a + 1), bl = strlen (b + 1); memset(c, 0, sizeof(c)); for (int i = 1; i <= al; i++) for (int j = 1; j <= bl; j++) if (a[i] == b[j]) c[i][j] = c[i - 1][j - 1] + 1; else c[i][j] = max(c[i - 1][j], c[i][j - 1]); printf("%d\n", c[al][bl]); } return 0;}

转载于:https://www.cnblogs.com/java20130723/archive/2013/05/13/3212161.html

你可能感兴趣的文章
spring mvc jsp运行不起来的问题
查看>>
大数据概述
查看>>
SpringBoot 密码MD5加密
查看>>
Mac MySQL启动不了解决办法(MySQL卸载重新安装教程)
查看>>
连通块
查看>>
servlet.txt笔记
查看>>
jquery设置select选中
查看>>
今天说一下DML触发器的顺序
查看>>
Memcached学习(一)--网络模型
查看>>
FragmentTransaction add 和 replace 区别 转
查看>>
jQuery 效果方法
查看>>
STM32物联网通信WIFI
查看>>
java反射案例详解
查看>>
MAGENTO 与 reindexer
查看>>
数字,字符串,列表及其内置方法
查看>>
iOS遍历数组的同时删除元素
查看>>
小强的HTML5移动开发之路(16)——神奇的拖放功能
查看>>
zookeeper FastLeaderElection
查看>>
Jquery AJAX如何使用Promise/Deferred实现顺序执行?
查看>>
进度条
查看>>