A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxh794708907 中级黑马   /  2015-7-22 22:27  /  911 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。
#include <stdio.h>

int main(int argc,const char * argv[]) {
    char a[] = {'n','b','i','t','h','e','i','m','q','n','b'};
    char b[] = {'i','t','h','e','i','q'};
    int A =sizeof(a);
    int B =sizeof(b);
    int l =0;//当前最大长度
    int L =0;//最大长度
    int I = 0;//最大长度的起始位置
    for (int i =0; i < A;  i++) {
        for (int j = 0; j < B; j++) {
            for (int k = 0 ; k + j < B; k++) {
                if (a[k + i] == b[j + k]) {
                    l++;
                }else{
                    if (L < l){
                        L = l;
                        I = i;
                    }
                    l = 0;
                    break;
                }
            }
        }
    }
    for (int i =0 ; i < L; i++) {
        printf("%c",a[I + i]);
    }
    return 0;
}如题 这是那个求最大公共字符串的程序代码 麻烦各位高手给我解答一下思路 我不知道那三个for循环到底是什么意思 谢谢了 给我介绍一下这个程序的代码到底代表什么意思 给我注释一下  感激不尽

3 个回复

倒序浏览
前面两个fof循环  就类似于二维数组的遍历 ,把每一种有可能是最大 公共单词的组合的第一个字母遍历里出来。第三个for循环是在 是上面每个遍历出来的结果进行比较 如果字母相等  。就以当前字母为单词首字母,比较下一个字母是否相同 。。。。。。。。
回复 使用道具 举报
liusuizuoyou 发表于 2015-7-23 18:11
前面两个fof循环  就类似于二维数组的遍历 ,把每一种有可能是最大 公共单词的组合的第一个字母遍历里出来 ...

我还是没怎么动  他那几个变量不知道具体是什么意思 有什么作用 没搞懂  例如 k是干嘛的 1是干嘛的 如果有时间 你能给我把每一步都分析一下  真心感谢  哈哈
回复 使用道具 举报
wxh794708907 发表于 2015-7-23 18:41
我还是没怎么动  他那几个变量不知道具体是什么意思 有什么作用 没搞懂  例如 k是干嘛的 1是干嘛的 如果 ...

char a[] = {'i','t','i','t','h','e','i','m','q','n','b'};     // 字符串a 的前面两个  字符与b是一样的
char b[] = {'i','t','h','e','i','q'};

for (int i =0; i < A;  i++) {
        for (int j = 0; j < B; j++) {
            for (int k = 0 ; k + j < B; k++)
                if (a[k + i] == b[j + k])
当 i=0   j=0  的时候  那么 i  就是这个单词的首字母  ,接着我们就要看他们下一个字符是不是一样的,于是乎
   第三个循环 就是干这事的   如上多写的字符串中   当i=0    j=0  时   那么  a[k+i]==a[0]   b[j+k]==a[0]
因为  a[0]==b[0]  成立 所以执行     i++;  紧接着 对比   a   b   第二个字母是否一样  k++
                 
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马