[山东科技大学OJ]1837 Problem M: 二进制串匹配

 

Time Limit: 3 Sec  Memory Limit: 128 MB

Submit: 678  Solved: 444

[Submit][Status]

Description

给定两个二进制串A和B,只有“0”和“1”组成。现在的任务是求出串A在串B中出现多少次?

 

例如,串B是“1001110110”而串A为“11”,你应该输出3。

 

Input

第一行为一个整数n,表示下面有n组样例。在每一组样例中有两行,第一行给出了二进制串A,A长度不超过10,第二行给出了二进制串B,B的长度不超过1000。并且保证B总是长于A。

 

Output

 对于每一组输入,输出一行包含一个整数,表示A在B中出现的次数。

 

Sample Input

3

11

1001110110

101

110010010010001

1010

110100010101011 

Sample Output

3

0

3

HINT

Append Code

[Submit][Status]


#include <stdio.h>

#include <string.h>

#define N 1001

int main()

{

char a[N],b[N];

       int n,i,j,x,y;

scanf("%d",&n);

getchar();

while(n--)

{

    int sum=0;

    gets(a);

    gets(b);

    x=strlen(a);

    y=strlen(b);

    for(i=0;i<y-x+1;i++)

     {

            for(j=0;j<x;j++)

            {

                if(a[j]!=b[i+j])

                    break;

            }

            if(j==x)

                sum++;

        }

        printf("%d\n",sum);

    }

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值