#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#define NUM 100001
using namespace std;
int main()
{
int n, m, s, sum[NUM], i;
int a[NUM];
scanf("%d", &n);
while(n--)
{
scanf("%d%d", &m, &s);
for(i=1; i<=m; i++)
{
scanf("%d", &a[i]);
}
sum[0] = 0;
for(i=1; i<=m; i++)
{
sum[i] = sum[i-1] + a[i];
}
if(sum[m]<s)
{
printf("0\n");
continue;
}
int flag = m+1;
i = 0;
for(int j=1; j<=m; j++)
{
if(sum[i] > sum[j]-s)
continue;
while(sum[i] <= sum[j]-s)
i++;
flag = min(flag, j-i+1);
}
printf("%d\n", flag);
}
return 0;
}
#include<stdlib.h>
#include<algorithm>
#define NUM 100001
using namespace std;
int main()
{
int n, m, s, sum[NUM], i;
int a[NUM];
scanf("%d", &n);
while(n--)
{
scanf("%d%d", &m, &s);
for(i=1; i<=m; i++)
{
scanf("%d", &a[i]);
}
sum[0] = 0;
for(i=1; i<=m; i++)
{
sum[i] = sum[i-1] + a[i];
}
if(sum[m]<s)
{
printf("0\n");
continue;
}
int flag = m+1;
i = 0;
for(int j=1; j<=m; j++)
{
if(sum[i] > sum[j]-s)
continue;
while(sum[i] <= sum[j]-s)
i++;
flag = min(flag, j-i+1);
}
printf("%d\n", flag);
}
return 0;
}
C++求最短子数组
本文介绍了一个C++程序,该程序通过读取输入来确定达到特定目标和值所需的最短连续子数组长度。使用了滑动窗口的方法来解决这个问题,并通过预计算数组的累积和来提高效率。
5573

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



