您的位置:首页 > 其它

南阳ACM5-Binary String Matching

2013-11-11 19:36 417 查看
/*

Binary String Matching

时间限制:3000 ms | 内存限制:65535 KB

难度:3

描述

Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how

many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while

the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit

输入

The first line consist only one integer N, indicates N cases follows. In each case, there are two lines,

the first line gives the string A, length (A) <= 10, and the second line gives the string B,

length (B) <= 1000. And it is guaranteed that B is always longer than A.

输出

For each case, output a single line consist a single integer, tells how many times do B appears as a

of A.

样例输入

3

11

1001110110

101

110010010010001

1010

110100010101011

样例输出

3

0

3

*/

#include <iostream>

using namespace std;

#include <cstring>

const int N = 10;

const int M = 1000;

int GetTheMatchNumber(char *pa, char *pb);

int main()

{

int n;

char a
;

char b[M];

// freopen("1.txt", "r", stdin);

// freopen("2.txt", "w", stdout);

cin>>n;

while(n--)

{

cin>>a;

cin>>b;

cout<<GetTheMatchNumber(a, b)<<endl;

}

return 0;

}

int GetTheMatchNumber(char *pa, char *pb)

{

int la, lb;

int i, j, m;

// int number = 0;//记录相同位数的个数

int n = 0; //记录A在B中相区配的个数

la = strlen(pa);

lb = strlen(pb);

for (i = 0; i < lb-la+1; i++)

{

for (j = 0, m = i; j < la; j++, m++)

{

if (pa[j] != pb[m])

break;

}

if (j == la)

n++;

}

return n;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: