相同的和
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描述
-
给出一些数a1,a2,a3,a4.....,an,如果一个连续的字串的和等于常数m,那么这个子串就是我们想要的,那么问题很简单,请求出这样字串的个数?例如:数列为:3,4,1,6,2,5。m 的值为7时,连续字串{3,4},{1,6},{2,5}满足要求。
思路:
通过循环从第一个数开始加,然后看看如果相同就t++,如果大于m就只能从第二个数开始遍历了!具体看代码:
代码:
#include <stdio.h> #include <string.h> int a[1000005]; int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } int s; int t=0; for(int i=1;i<=n;i++)//统计以所有的数开始的字串 { s=a[i]; if(s==m)//因都应该为有可能这个字串中就有一个m,所以每一个数都应该进行遍历 {//并且还得提前判断这个数是不是m,如果是就直接从下一个数开始! t++;//就因为这一点wa了 一次! continue; } for(int j=i+1;j<=n;j++) { s+=a[j]; if(s==m) { t++; break; } else if(s>m) { break; } } } printf("%d\n",t); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-10 13:40:26