pku 1226 Substrings
来源:互联网 发布:最优化算法第二版答案 编辑:程序博客网 时间:2024/05/18 00:41
转的:
题意:输入n个字符串,每个字符串的长度最多为100,要求求出这n个字符串的最长公共子串长度。(注意:假设这n个字符的最长公共子串为maxstr,则说每个字符串的的正序或逆序中只要其中一个有maxstr,就说明该字符含有maxstr).
思路:(1)先求这n个字符串中的最小长度字符串minstr.
(2)再枚举公共子串的长度从len(minstr) 到 1,枚举所有可能的公共子串substr,再检查其它n -1个字符串中的正序或逆序串中是否有substr,如果满足,则返回长度len(substr),否则继续枚举,直到长度为0.
(3)strstr, strncpy函数的应用很重要,大家可上网查相应的用法。
源代码:
#include<iostream>//此代码参考了网上资料
using namespace std;
const int MAXN =101;
charstr[MAXN][MAXN];
voidmy_strrev(char*str)
{
int l, r;
r =strlen(str);
l = 0; r = r- 1;
while(l <r) {
char ch =str[l];
str[l ++] =str[r];
str[r --] =ch;
}
}
intmax_substr(char*source, intn)
{
int sublen =strlen(source);
int sourcelen =strlen(source);
char substr[MAXN],resubstr[MAXN];
while(sublen> 0){
for(int i =0; i <=sourcelen - sublen; i ++){
strncpy(substr, source+ i, sublen);
strncpy(resubstr, source+ i, sublen);
substr[sublen] ='/0';
resubstr[sublen] ='/0';
my_strrev(resubstr);
bool flag =true;
for(int j =0; j <n; j ++)
if(strstr(str[j],substr) ==NULL
&&strstr(str[j],resubstr) == NULL){
flag = false;break;
}
if(flag)return(sublen);
}
sublen --;
}
return(0);
}
int main()
{
char minstr[MAXN];
int i, j, n,minlen, test;
scanf("%d",&test);
while(test --){
scanf("%d",&n);
getchar();
minlen = 100;
for(i =0; i <n; i ++) {
scanf("%s",str[i]);
if(minlen>strlen(str[i])){
minlen =strlen(str[i]);
strcpy(minstr,str[i]);
}
}
printf("%d/n",max_substr(minstr,n));
}
return(0);
- PKU 1226 Substrings
- pku 1226 Substrings
- pku 1226 Substrings
- poj 1226 Substrings
- POJ 1226 Substrings KMP
- POJ 1226 Substrings
- 百练 1226 Substrings
- poj 1226 Substrings
- poj 1226 Substrings
- poj 1226 Substrings
- POJ 1226 Substrings
- poj 1226:Substrings
- POJ 1226-Substrings
- poj-1226-Substrings
- POJ 1226 substrings
- poj 1226 Substrings
- poj 1226 Substrings
- POJ 1226 Substrings
- Perl、PHP、ASP、JSP技术比较
- awk命令详解
- grep命令详解
- Linux下的select封装(暂时只对socket)
- vc 入门
- pku 1226 Substrings
- 1976年 比尔·盖茨写给电脑爱好者的公开信
- Linux缺页中断处理
- Common Subsequence 1458 pku
- vc的学习方法(转)
- CWinThread类
- Knight Moves pku 1915
- 系统封装语音教程和软件封装
- 系统封装语音教程和软件封装