这个题来自于左程云老师的书本p354,但是讲的并不是很透彻,现在这里试着分析如下
代码如下
#include <iostream>
using namespace std;
int arr[]={1,2,1,1,1};
int k=3;
int len=5;
int fun()
{
int ret=0;
int left=0;
int right=0;
int sum=arr[0];
while(right<len)
{
if(sum<k)
{
right++;
if(ret>=len)
break;
sum+=arr[right];
}
else if(sum>k)
{
sum-=arr[left];
left++;
}
else
{
ret=max(ret,right-left+1);
sum-=arr[left];
right++;
left++;
}
}
return ret;
}
int main()
{
cout<<fun()<<endl;
return 0;
}