<!-- lang: cpp -->
/**
*给定长度为n的整数数列:a0,a1,..,an-1,以及整数S。
*这个数列会有连续的子序列的整数总和大于S的,求这些数列中,最小的长度。
*题目转自:@陈利人(sina weibo)
**/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int input[10]={1,2,5,1,3,4,6,9,3,8};
int s = 25;
int i,j;
int temp;
int num;
temp = 0;
for(i=0;i<10;i++)
{
temp+=input[i];
if(temp>s)
{
j = i;
break;
}
}
i=0;
num = j+1;
while(j<10)
{
while(temp>s)
{
temp = temp -input[i];
i++;
}
i--;
temp = temp + input[i];
if(j-i+1 < num)
num = j-i+1;
j++;
temp = temp + input[j];
}
printf("%d",num);
return 0;
}
转载于:https://my.oschina.net/dongdong2012/blog/162798