| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 530 人关注过本帖, 1 人收藏
标题:文学研究助手与模式匹配KMP算法
只看楼主 加入收藏
yanvivi
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-11-22
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:1 
文学研究助手与模式匹配KMP算法
已知KMP算法如下,如何将文学研究助手功能融入?
程序的输出结果是每个词的出现次数和出现位置所在的行的行号,格式自行设计。
待统计的“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个空格符。
#include <stdio.h>
#include <string.h>
#define Maxsize 100

int StrIndex_KMP(char *s,char *t,int pos,int next[])
{
    int i,j;
    i=pos;
    j=1;
    while(i<=s[0]&&j<=t[0])
        if(j==0||s[i]==t[j])
        {
            i++;
            j++;
        }
        else
            j=next[j];
        if(j>t[0])
            return i-t[0];
        else
            return 0;
}

void Get_next(char t[],int next[])
{
    int i,j;
    i=1;
    j=1;
    next[1]=0;
    while(i<t[0])
    {
        if(j==0||t[i]==t[j])
        {
            i++;
            j++;
            next[i]=j;
        }
        else
            j=next[j];
    }
}

main()
{
    char s[Maxsize],t[Maxsize];
    int next[Maxsize],i;
    printf("请输入存储内容: \n");
    scanf("%s",s+1);
    printf("请输入匹配的内容: \n");
    scanf("%s",t+1);
    s[0]=strlen(s+1);
    t[0]=strlen(t+1);
    Get_next(t,next);
    i=StrIndex_KMP(s,t,1,next);
    if(i==0)
        printf("匹配失败!\n");
    else
        printf("匹配成功!\n首字符存储位置为%d\n",i);
}
搜索更多相关主题的帖子: 文学 include 单词 如何 
2013-12-15 16:12
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:20 
不知问咩

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-12-15 17:25
快速回复:文学研究助手与模式匹配KMP算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014713 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved