最大公共连续子序列
经典:题给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 第一反应一定是动态规划,那么需要注意以下几点: 1. 如果其中一个为空串或者都为空串,结果为0 if(len1==0 || len2==0) return 0; 2. 输入中可能包含空格,空格也将作为一个字符进行比较 我经常用经典的输入输出流,cin遇到回车和空格均当作字符串的结束,因此,处理方式如下: //包含头文件 #include <string.h> #include <cstdio> //将字符串定义为char数组 char s1[50],s2[50]; //输入时,采用cin.getline(str,maxinum) cin.getline(s1,50); cin.getline(s2,50); 3. 申请二维数组是,第一,采用vector容器实现,第二,采用动态申请空间实现,我用的第二种 int len1=strlen(s1); int len2=strlen(s2); int max=-1; if(len1==0 || len2==0) return 0; int **a = new int *[len1+1]; //先动态申请行 int i,j; for(i=0;i<=len1; ++i) { a[i] = new int [len2+1]; //在动态申请列;p[i]的类型是int