注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
来源:互联网 发布:js获取div title属性 编辑:程序博客网 时间:2024/05/16 08:27
求公共子序列的思路:
假设A 串;B串,当第一个字符相等时就等于lena-1,lenb-1 的公共子序列的个数加一,当不相同的时候就是等于max(lena-1和lenb的公共,lena和lenb-1的公共)
所以就可以等到一个状态转移方程式。
而求公共子串的时候只要变一下就可以了。而下面就是求公共子串的。可以意会一下。
点击打开链接
#include <stdio.h>#include <string.h>int main(){ char a[105],b[105],c[105][105]; int t; scanf("%d", &t); while(t--) { memset(c,0,sizeof(c)); scanf("%s",a); int len=strlen(a); for(int i =0; i<len;i++) b[i]=a[len-1-i]; int max=-9999,ok; for(int i =1;i<=len;i++) { for(int j =1; j<=len;j++) { if(a[i-1]==b[j-1]) { c[i][j]=c[i-1][j-1]+1; } if(max<c[i][j]) { max=c[i][j]; ok=i; //记录下重点的下边再重新把它倒数。 } } } for(int i=ok-max;i<ok;i++) //因为要围城是0,所以是从1开始的然后就是当道i时其实是i-1的; printf("%c",a[i]); puts(""); } return 0;}
- 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
- 求最长公共子序列的长度
- 求最大公共子序列的长度
- HDU1403 - Longest Common Substring(后缀数组求nlog(n)的最长公共子序列)
- 求两个字符串的最长公共子串,最长公共子序列,编辑距离
- 【笔试】求 最长公共子序列 和 最长公共子串的长度
- poj1458求两个串的最大公共子序列咯
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- 求两个字符序列的最大公共子序列
- 利用矩阵求两个序列的最长公共子序列
- 求两个序列的最长公共子序列
- 求公共子序列和公共子串
- 求两个字符串的最大公共子串 ,不区分大小写
- 最长公共子序列(不是子串)
- 求两个字符串的最长公共子序列的数量
- hdu1403---Longest Common Substring(后缀数组求2个字符串的最长公共子串)
- 最长公共子序列,最长公共子串,最长递增子序列的问题~
- 求最长公共子序列的空间优化。
- 中国哲学简史-冯友兰
- Android Layout Tricks #3: Optimize, Part 1
- MFC 判断一个窗口是否是可见状态
- hdu 3335 (最小路径覆盖)
- .net中的认证(authentication)与授权(authorization)
- 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
- CTime 类型详解
- UDP简单通信
- ofstream的使用方法
- 实验七
- Android工程师不得不看的建议
- c++ 结构体练习 结构体重的char数组指针
- 网址
- wince 自动启动程序设置