运行效果:

Nearth==>动态规划算法002/最大子段和算法_最大子序列

代码学习:

#include<iostream>
using namespace std;
#define MAX
int arr[MAX]={0};
void maxSum(int n,int* arr){
int sum=0;//记录最大子序列和
int b=0;//记录之前所求的最大子序列和
for(int i=1;i<=n;i++){
if(b<0){//如果之前的最大子序列小于0,则b为当前数组的值
b=arr[i];
}
else{//如果之前的最大子序列大于0,则b要加上当前数组
b=b+arr[i];
}
if(b>sum){//比较得出最大子序列和
sum=b;
}
}
cout<<endl;
cout<<"最大字段和为:"<<sum<<endl;
cout<<"***************************************"<<endl;
}
int main(){
int n;
cout<<"###################################################"<<endl;
cout<<"**************最大字段和算法测试****************"<<endl;
cout<<"###################################################"<<endl;
int i=1;
while(i<20){
cout<<"-------------------第"<<i++<<"次测试开始-------------------"<<endl;
cout<<"请输入你想要输入的数据个数:";
cin>>n;
cout<<"*************************************"<<endl;
for(int i=1;i<=n;i++){
cout<<"第"<<i<<"个数据为:";
cin>>arr[i];
}
cout<<"*****************测试结果如下***********************"<<endl;
maxSum(n,arr);
cout<<"###################################################"<<endl;
}
return 0;
}