题目描述
有一个由0和1组成的字符串,它好长呀--------一望无际
恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见0和1也是很头疼的,
现在他的老师想让他计算出来包含K个1的子串有多少个-----呀,头要炸了!!!
小ho知道你的数学棒棒哒,所以来找你帮忙了。
输入
第一行是一个数K。
第二行是一个字符串str。
0 < |str| ≤ 106
输出
一个数S,代表了满足条件的个数。
样例输入
2
101010
样例输出
6
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
#include<cstring>
#define N 1000002
char s[N];
long long ans=0;
int main()
{
int k,i,len,j,p,g1=0,g2=0,num=0,f;
cin>>k;
scanf(" %s",s);
len=strlen(s);
for(i=0; i<len; i++)
{
f=0;
if(s[i]=='0')
g1++;
else
{
for(j=i; j<len; j++)
{
if(s[j]=='1')
num++;
if(num==k)
{
f=1;
break;
}
}
for(j++; j<len; j++)
{
if(s[j]=='0')
g2++;
if(s[j]=='1')
break;
}
if(f==1)
ans+=(g1+1)*(g2+1);
g1=g2=0;
num=0;
}
}
cout<<ans<<endl;
return 0;
}
当时怎么也没想起来,%>_<%其实就是一道思维题,坐我旁边的大佬第一道ac题,我愣是到最后也没做出来orz
本文介绍了一个计算含有特定数量1的子串数量的算法问题,并提供了一段C++代码实现,该问题旨在考察字符串处理及计数技巧。
718

被折叠的 条评论
为什么被折叠?



