求一个数组A的子数组之和最大的值
设有n个不全为负的整型元素存储在一维数组A[n]中,它包含很多连续的子数组,
例如数组A={1,-2,3,10,-4,7,2,-5},求出A的子数组之和的最大值(例如数组A的最大的子数组为{3,10,-4,7,2},因比输出为该子数组的和18)。
(此题为408统考模拟题,一些算法不太好的(我),在考试时大可用暴力破解法,只会扣1-3分,但可以节省很多时间!
#include<stdio.h>
int Amax(int a[],int n){
int max=a[1],sum=0;
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
sum+=a[j];
// printf("` %d ` ",sum);
if(sum>max) {
max=sum;
}
}
sum=0;
}
return max;
}
int main(){
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
// for(int i=0;i<n;i++){
// printf("%d ",a[i]);
// }
int m=Amax(a,n);
printf("%d",m);
}