HPUOJ 小ho的01串
2017-08-13 21:04
267 查看
1415: 小ho的01串 [字符串]
时间限制: 1 Sec 内存限制: 128 MB提交: 261 解决: 127
题目描述
有一个由0和
1组成的字符串,它好长呀--------一望无际
恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见
0和
1也是很头疼的,
现在他的老师想让他计算出来包含
K个
1的子串有多少个-----呀,头要炸了!!!
小ho知道你的数学棒棒哒,所以来找你帮忙了。
输入
第一行是一个数K。
第二行是一个字符串
str。
0 < |str| ≤ 106
输出
一个数S,代表了满足条件的个数。
样例输入
2 101010
样例输出
6
来源
思路:暴力求解
每次统计出第一个1前面0的个数num,并将总循环移到第一个1处,不然后面会重复计算。然后小循环查到第n个1的位置并退出小循环,从那个位置开始,先总和加上(num+1),因为每个0都会与那n和1整体构成一个组合。然后求第n个1后面连续0的个数,每查到一个0总和加(num+1), 原因同上。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; int main(){ int n; string s; scanf("%d",&n); cin>>s; long long sum=0; for(int i=0;i<s.size();i++){ int f=0;//记录是否满足条件 int num=0;//记录第一个1前面0的个数 int k=0;//记录第几个1 while(s[i]=='0' && i<s.size()){ num++; i++; } if(s[i]=='1'){ for(int j=i; j<s.size(); j++){ if(s[j]=='1')k++; if(k==n){ f=1; k=j+1;//记录仅临第n个1的0的位置 break; } } } if( f ){ sum += (num+1); while(s[k]=='0' && k<s.size()){ sum += (num+1); k++; } }else break; } printf("%lld\n",sum); return 0; }
相关文章推荐
- HPUoj 1415: 小ho的01串 [字符串]
- 小ho的01串
- 多校联萌(三)小ho的01串
- HPU 1415 小ho的01串 (字符串)
- 1415: 小ho的01串 [字符串]
- HPU1415--小ho的01串
- HPU1415 小ho的01串(字符串,河南省多校连萌(三))
- 小ho的01串(枚举)
- hpu1415——小ho的01串
- 1415: 小ho的01串 [字符串]
- 【HPU 1415: 小ho的01串】& 尺取
- 小ho的01串
- 问题 F: 小ho的01串
- 小ho的01串 [字符串]
- 小ho的01串
- 为什么在网页链接中存在#号不能正常链接?????,如链接到"http://www.ho.com/c#.html"
- 01串的排序问题_算法
- HO引擎近况20130227
- 准备翻译 Song Ho Ahn (안성호)的OpenGL教程
- cdoj 方师傅与01串(二叉树)