Brute-Force算法 模式匹配

////////////////////////////////////////////

//Brute-Force算法 模式匹配 				  //

//Author:Wang Yong				  		  //	

//Date:	2010.8.19				  		  //

////////////////////////////////////////////





#include <stdio.h>

#include <stdlib.h>



#define MAX 100



/////////////////////////////////////////////



//定义串的类型



typedef struct

{

	char ch[MAX];

	int len;

} String;

//串的初始化 

void StringInit(String &str,char ctr[])

{

	int i;

	for(i = 0 ; ctr[i] != '\0'; i++)

		str.ch[i] = ctr[i];

	str.len = i;

}

//Brute-Force算法1

int Brute_Force(String s,String t)

{

	int i;

	for(i = 0 ; i < s.len;i++)

	{

		if(s.ch[i]  ==  t.ch[0])

		{

			int j,k = 1;;

			j = i;

			while(j++)

			{

				if(k == t.len - 1)

					return i+1; 

				if(s.ch[j] != t.ch[k])

					break;

				if(s.ch[j] == t.ch[k]) 

					k++;

			}

		}

	}

	return 0;

} 

//////////////////////////////////////////

int main()

{

	char c1[100],c2[100];

	printf("请出入字符串:");

	scanf("%s",c1);

	printf("请输入子串:");

	scanf("%s",c2);

	String s1,s2;

	StringInit(s1,c1);

	StringInit(s2,c2);

	int i;

	i = Brute_Force(s1,s2);

	if(i)

		printf("匹配的位置为:%d \n",i);

	else

		printf("不匹配\n");

	

	 

	return 0;

}

你可能感兴趣的:(for)