我的代码说明:
例如,取n=3,并将p[i]设为13。开始时,max=0。我按这个顺序取序列:1,1+2,1+2+3,2,2+3,3每次我找到某种金额时,我都会将其与最大金额进行比较
我的代码是:
#包括<;iostream>;
使用名称空间std;
//f-所有序列的数量(序列长度1到n)
//n-p的数量[i]
//q是序列和
//这是当我们到达最后一个元素时增加的数字。例如,数字1,2,3,当我们达到1+2+3时,x增长到2,2+3
int main()
{
int n,i,f=0,q,x=0,max,j;
cin>;>;n;
int*p=新的int[n]();
对于(i=0;i<;n;i++,f++=i){
cin>;>;p[i];
}
max=p[0];
对于(i=0;i<;f;x++){
q=0;
对于(j=x;j<;n;j++,i++){
q+=p[j];
如果(q>;=最大值){
max=q;
}
}
}
cout<;<;max;
返回0;
}
这是90%的结果:
我怀疑利润可能是负的,在这种情况下,算法应该选择最坏的一天,因为不允许零天
将max初始化为INT\u MIN