密码学算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
return i-strlen(p);
}
i=i-j+1;
}
return -1;
}
int main()
{
char *szSource = "ababcababa";
char *szSub = "ababa";
int index =BFMatch(szSource, szSub);
printf("目标串包含匹配串的起始位置:%d",index);
system("PAUSE");
return 0;
}
KMP算法:
#include<iostream>
#include<string.h>
int next[100];
void getnext(char b[])
{int i=1,j=0;
next[1]=0;
while(i<=strlen(b))
{
if(j==0||b[i-1]==b[j-1])
else nextindex = index + 1;
if(nextindex > LEN-strlen(p))
return -1;
else
return nextindex;
}
int main()
{
int position[LEN]={0};
char *src="ababcababa";
char *patten="ababa";
{
i++;j++;next[i]=j;
}
else j=next[j];
}
}
int kmp(char a[],char b[])
{ຫໍສະໝຸດ Baidu
int i=1,j=1;
while(i<=strlen(a)&&j<=strlen(b))
{
if(j==0||a[i-1]==b[j-1])
{
i++;j++;
}
else j=next[j];
int i,j, nextindex;
i = strlen(p)-1;
for(; i>=0; i--, j--)
{
if(s[j] != p[i])
break;
}
if(i<0)
return 0;
else
if(position[s[j]]>0)
nextindex = index + i - position[s[j]];
int i, nextindex, index=-2, pos=0;
for(i=0; i<strlen(patten); i++)
position[patten[i]]=i;
index = BMMatcher(src, patten, 0, position);
while(!(index==-1 || index==0))
BF算法:
#include <stdio.h>
#include<string.h>
int BFMatch(char *s,char *p)
{
int i,j;
i=0;
while(i<strlen(s))
{
j=0;
while(s[i]==p[j]&&j<strlen(p))
{
i++;
j++;
}
if(strlen(p)==j)
ababa
printf("输出next值:\n");
for(int i=1;i<=strlen(b);i++)
printf("%d ",next[i]);
printf("\n");
printf("%d",kmp(a,b));
system("pause");
main();
return 0;
}
输入字符串ababcababa
}
if(j>strlen(b))
return i-strlen(b);
else return 0;
}
int main()
{
char a[40],b[40];
printf("要匹配的主串:\n");
scanf("%s",a);
printf("要匹配的子串:\n");
scanf("%s",b);
getnext(b);
}
BM算法:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN 256
int BMMatcher(char *s, char *p, int index, int position[])
{
int len = strlen(s);
{
nextindex = index;
index = BMMatcher(src, patten, nextindex, position);
}
if(index == -1)
printf("Can not find it\n");
if(index == 0)
printf("Find it, the index is: %d.\n", nextindex);
相关文档
最新文档