运行效果:
代码学习:
#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; }
Nearth==>动态规划算法002/最大子段和算法
最新推荐文章于 2023-11-23 16:43:43 发布