描述
水果店里有 n 个水果排成一列。店长要求顾客只能买一段连续的水果。
小鱼对每个水果都有一个喜爱程度 ai,最终的满意度为他买到的水果的喜欢程度之和。
如果和为正(不管是正多少,只要大于0即可),他就满意了。
小鱼想知道在他满意的条件下最多能买多少个水果。
你能帮帮她吗?
输入
第一行输入一个正整数 n,表示水果总数。
第二行输入 n 个整数ai,表示小鱼对每个水果的喜爱程度。
输出
一行一个整数表示结果。(如果 1 个水果都买不了,请输出 0)
输入样例 1
5
0 0 -7 -6 1
输出样例 1
1
题目要求找出最多的连续的和为正数的序列的元素数,我们可以先使用数组存储数据,然后遍历数组,第一次从第一位开始第二次第二位,以此类推,同时在每遍历到一个元素就判断这前n项的和是否为正数,并且是否有之前的序列长,如果遇到整个序列都大于0,那么一旦遇到就输出序列长度即可,不再进行推移,后面的序列长度一定小于它
#include <iostream>using namespace std;int main()
{int n;while(cin>>n){int a[n];long long sum;for(int i=0; i<n; i++)cin>>a[i];int cont=0;for(int i=0; i<n; i++){sum=0;for(int j=i; j<n; j++){sum+=a[j];int temp=j-i+1;if(sum>0&&cont<temp)cont=temp;}if(cont==n-i)break;}cout<<cont<<endl;}return 0;
}