码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-10-14 16:53:13      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:include   png   就是   clu   for   lease   stream   http   using   

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

技术分享图片

 

技术分享图片

总结 

把所有的子数组都找出来并求出最大值那么程序代码就太多了,很麻烦,然后现在这个样子可以大大的节约时间,然后再一个是要思考数组的长度要能改变,然后上网查了好多别人的思路发现了好多有用的语句,借鉴学习,以后还要多看看c语言的教科书

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

标签:include   png   就是   clu   for   lease   stream   http   using   

原文地址:https://www.cnblogs.com/chenchen21/p/9786220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!