本人最原始的暴力破解方法,外层循环不断回溯。测试点是通过了,但数字一旦很大运行时间也非常长。
#include <stdio.h>
int main()
{
int sum,n,i,j,max=0;
int a[100005];
scanf("%d",&n); //共n个测试数据
for(i=0;i<n;i++) scanf("%d",&a[i]); //扫入数据,下标0~n-1
for(i=0;i<n;i++) //外层循环,控制一个开始位置
{
sum = 0; //每次新位置开始,子列和清零
for(j=i;j<n;j++) //内层循环,从该位置开始每次多读取一个数字,逐渐生成越来越长的子列
{
sum+=a[j]; //统计子列和
if(sum>max)。 //比较得到更长的子列和
max = sum;
}
}
printf("%d",max);
return 0;
}
#include <stdio.h>
int main()
{
int sum=0,n,i,j,max=0;
int a[100005];
scanf("%d",&n); //共n个测试数据
for(i=0;i<n;i++) scanf("%d",&a[i]); //扫入数据,下标0~n-1
for(i=0;i<n;i++)
{
sum+=a[i]; //每次累加
if(sum>max) max=sum;
if(sum<0) sum=0;
}
printf("%d",max);
return 0;
}