返回一个整数数组中最大子数组的和

Posted zoulan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。

设计思想:

输入一个长度为5的数组,第一次用每2个数按顺序组成4个子数组,对其求和;第二次用每3个数按顺序组成3个子数组,对其求和;第三次用每4个数按顺序组成2个子数组,对其求和;第四次用5个数求整个数组的和;然后求所有子数组和的最大值。

源程序代码:

#include<stdio.h>
int main()
{
int a[5],sum=0,sum5[5],sum4[4],sum3[3],sum2[2],sum1,m,n,temp,max[5];
for(m=0;m<5;m++)
{
scanf("%d",&a[m]);
}
for(m=0;m<5;m++)
{
sum+=a[m];
sum5[m]=sum;
sum=0;
}
for(m=0;m<4;m++)
{
sum=sum+a[m]+a[m+1];
sum4[m]=sum;
sum=0;
}
for(m=0;m<3;m++)
{
sum=sum+a[m]+a[m+1]+a[m+2];
sum3[m]=sum;
sum=0;
}
for(m=0;m<2;m++)
{
sum=sum+a[m]+a[m+1]+a[m+2]+a[m+3];
sum2[m]=sum;
sum=0;
}
sum1=a[0]+a[1]+a[2]+a[3]+a[4];
for(m=0;m<5;m++)
{
for(n=m+1;n<5;n++)
{
if(sum5[m]<sum5[n])
{
temp=sum5[m];
sum5[m]=sum5[n];
sum5[n]=temp;
}
}
max[0]=sum5[0];
}
for(m=0;m<4;m++)
{
for(n=m+1;n<4;n++)
{
if(sum4[m]<sum4[n])
{
temp=sum4[m];
sum4[m]=sum4[n];
sum4[n]=temp;
}
}
max[1]=sum4[0];
}
for(m=0;m<3;m++)
{
for(n=m+1;n<3;n++)
{
if(sum3[m]<sum3[n])
{
temp=sum3[m];
sum3[m]=sum3[n];
sum3[n]=temp;
}
}
max[2]=sum3[0];
}
for(m=0;m<2;m++)
{
for(n=m+1;n<2;n++)
{
if(sum2[m]<sum2[n])
{
temp=sum2[m];
sum2[m]=sum2[n];
sum2[n]=temp;
}
}
max[3]=sum2[0];
}
max[4]=sum1;
for(m=0;m<5;m++)
{
for(n=m+1;n<5;n++)
{
if(max[m]<max[n])
{
temp=max[m];
max[m]=max[n];
max[n]=temp;
}
}}
printf("%d ",max[0]);
}

运行结果截图:

技术分享图片

 



































































































以上是关于返回一个整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章

返回一个二维整数数组中最大联通子数组的和

返回一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和

返回一个二维整数数组中最大子数组的和

返回一个整数数组中最大子数组的和(首尾相连)