1. 程式人生 > >返回一個整數組的最大子數組和

返回一個整數組的最大子數組和

mes [] 圖片 上網 計劃 總結 bsp ios 整數

#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語言的教科書

返回一個整數組的最大子數組和