题目内容: 给定长度为n的整数序列,a[1…n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(- 2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4]. 输入描述 第一行为一个整数n,表示数组有n个数据,第二行依次输入n个整数 输出描述 计算出n个整数中连续k个数的最大和 输入样例 5 1 2 3 4 5 7 6 -5 5 8 -13 5 7 输出样例 15 14*/
#include<stdio.h> int sum(int A[],int i,int j){//A[]中多个元素组成的一个新的数 int k,s=0; for(k=i;k<=j;k++){ s+=A[k]; } return s; } int MaxSum(int A[],int n){//找出所有多个元素组成的新数中最大的拿一个值 int i,j,s,maxs; maxs=A[0];//初始化最大值为A[0] for(i=0;i<n;i++){ for(j=0;j<n;j++){ s=sum(A,i,j); if(s>maxs)//如果后面多个元素组成的s大于maxs则交换值存入 maxs = s; } } return maxs; } int main() { int n,i,A[1000],result; while(~scanf("%d",&n)){ for(i=0;i<n;i++){ scanf("%d",&A[i]); } result=MaxSum(A,n); printf("%d\n",result); } return 0; }