数字段的模式匹配代码

来源:互联网 发布:家用网络摄像头好不好 编辑:程序博客网 时间:2024/06/07 15:21

//模式匹配,一个数字片段,查询另一个一个长片段中有没有与这个相匹配的片段

#include "stdio.h"
#include "conio.h"
#define  OK   1
#define  ERROR   -1
#define  m1 5
#define  m2 20
#define  maxsize 100
typedef struct sqlist //顺序表示
{
  int elem[maxsize];
  int length;
}sqlist;//end

sqlist createsqlist(sqlist L,int n) //创建顺序表
{
 int i=0;
 L.length=n; //长度
 while(i<n)
 {
  scanf("%d",&L.elem[i++]);
 }
 
 for(i=0;i<L.length ;i++)
     printf("%5d",L.elem[i]);
 printf("/n");
 return L;
}

int match(sqlist la,sqlist lb,int m,int n)//la匹配片段;lb匹配模板;元素允许重复、无序
{
 if(m>la.length) return 1;
 while(n<=lb.length)
 {
 if(la.elem[m-1]==lb.elem[n-1]) {m=m+1;n=n+1;return match(la,lb,m,n);} //递归调用
   else return match(la,lb,1,n-m+2);
 }
 return 0;
}//end

void main()
{
 sqlist l1,l2;
 printf("匹配片段:");
 l1=createsqlist(l1,m1);
 printf("匹配模板:");
 l2=createsqlist(l2,m2);
 if(match(l1,l2,1,1)) printf("/nMatch Success!");
  else printf("/nMatch False!");
  getch();
}

原创粉丝点击