南阳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;
}
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;
}
相关文章推荐
- 求Sn=a+aa+aaa+……+aa……a的值
- Laravel RESTful快速部署指南(二)
- 堆操作与堆排序
- iOS 如何选择delegate、notification、KVO
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- 祝QQ永远快乐
- TCP的工作原理,TCP的流量控制原理,滑动窗口,拥塞窗口,ACK累计确认等
- struts2拦截器的配置
- Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
- 理解模版
- 虚拟机中Ubuntu在命令行下用户无法登录
- 百度地图之驾车路线的搜索
- android ListView 嵌套listview
- Reverse Nodes in k-Group
- NYOJ 427 Number Sequence
- Spring事务传播特性实例解析
- 判断是否是回文数
- 认识opencv
- 大规模企业网站集群如何实现会话保持?
- Qt窗口屏幕居中显示