您的位置:首页 > 其它

1415: 小ho的01串 [字符串]

2017-08-13 16:57 330 查看

1415: 小ho的01串 [字符串]

时间限制: 1 Sec 内存限制: 128 MB提交: 258 解决: 125 统计

题目描述

有一个由
0
1
组成的字符串,它好长呀--------一望无际恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见
0
1
也是很头疼的,现在他的老师想让他计算出来包含
K
1
的子串有多少个-----呀,头要炸了!!!小ho知道你的数学棒棒哒,所以来找你帮忙了。

输入

第一行是一个数
K
。第二行是一个字符串
str
0 < |str| ≤ 106

输出

一个数
S
,代表了满足条件的个数。

样例输入

2
101010

样例输出

6
这个题要注意非空子串的定义,求出其包含多少个1,就是求出n*m的值,n表示这个子串前面连续0的个数加1,注意是连续0 的个数,
m表示这个子串后面的连续0的个数加1.
在写时,注意在计算m时,要进行两次的break,终止第一次找出1的个数满足时的for,和满足后的for的值。
#include<stdio.h>
#include<string.h>int main(){int t;char s[1000010];scanf("%d%s", &t, s);int len = strlen(s);int ch=0,chh=0,j,flag;int sum = 0;int a; for(int i = 0;i < len; i++){flag=0;a=0;if(s[i] == '0'){ch++;}else{for(j = i; j < len; j++){if(s[j] == '1'){a++;}if(a == t){flag=1;for(int jj = j+1; jj < len;jj++){if(s[jj] == '0')chh ++;if(s[jj] == '1'){break;}}break;}}//	printf("%d %d\n",ch,chh);if(flag==1)sum +=(ch+1)*(chh+1);ch=0;chh=0;}}printf("%d\n",sum);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: