EOJ 3179 简单的匹配

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 100
#define maxm 30
char t[maxn],p[maxm];
int simple_match(char t[],char p[],int n,int m)
{
    int i,j,k;
    for(i=0;i<=n-m;i++)//从0一直找到n-m,因为m为要查找数组的长度
    {
        for(j=0,k=i;j<m&&t[k]==p[j];k++,j++);//如果找到了相同的起始,则继续比较
        if(j==m) return i;//如果j和要寻找的长度相同 查找成功
    }
    return -1;
}
int main()
{
    while(scanf("%s",t)!=EOF)//多组输入
    {
        scanf("%s",p);
        int n= strlen(t);//计算两个数组长度
        int m=strlen(p);
        printf("%d\n",simple_match(t,p,n,m));
    }
}
简单的匹配方法,最重要的一句就在于下面这句代码,一个for循环直接结束查找过程。
for(j=0,k=i;j<m&&t[k]==p[j];k++,j++);
阅读更多
个人分类: 数据结构
上一篇EOJ 3178 二分查找
下一篇C++primer第五版第三章答案(1)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭