题目:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
解答:
int maxSubArray(int* nums,int numsSize)
{
int max=nums[0];//将第一个值赋值为最大值
int i;
for(i=0;i<numsSize;i++)//从数组开头到结尾
{
int sum=0;//定义和为0
int j;
for(j=i;j<numsSize;j++)//从第j位到末尾
{
sum+=nums[j];//求和
if(sum>max)//如果和大于max,则替换max
max = sum;
}
}
return max;
}
int main(int argc, const char *argv[])
{
int numsSize;
printf("please input numsSize:\n");
scanf("%d",&numsSize);
int *p=(int *)malloc((numsSize)*sizeof(int));
int i;
printf("please input nums[]:\n");
for(i=0;i<numsSize;i++)
{
scanf("%d",&p[i]);
}
printf("%d\n",maxSubArray(p,numsSize));
return 0;
}
解题思路:
①将数组第一个值赋予max
②从第一个位置开始,求出所有序列的和sum
③返回sum的最大值