k代表长度,可以看作一个k长度的连续格子,你需要找出他的最小和,并且输出这个格子开始的地方
#include<stdio.h>
#include<iostream>
using namespace std;
int a[150005],b[150005];
int main()
{
int n,t,mi=0x3f3f3f3f;//mi赋值无穷大
scanf("%d%d",&n,&t);
for(int x=0;x<n;x++)
{
scanf("%d",&a[x]);
b[x]=b[x-1]+a[x];//把每一个a[x]及它之前的和用b[x]记录
}
for(int x=t-1;x<n;x++)
mi=min(mi,b[x]-b[x-t]);//遍历找最小值
for(int x=t-1;x<n;x++)
{
if(b[x]-b[x-t]==mi)//找开头
{
printf("%d",x+2-t);//从0开始,开头是(x+1)-(t-1)草稿纸演示即可
return 0;//只有一个,找到一个就结束,避免重复
}
}
}