#include<iostream>
using namespace std;
//最大子段和
int besti ,bestj , sum = 0;
void method(int a[] , int n){
int b = 0 , begin;
for(int i = 0 ; i < n ; i++)
{
if(b > 0)
b += a[i];
else
{
b = a[i];
begin = i;
}
if(b > sum)
{
sum = b;
besti = begin;
bestj = i;
}
}
}
int main()
{
int a[100];
int n;
cout<<"please input n : "<<endl;
cin>>n;
cout<<"please input n numbers: "<<endl;
for(int i = 0 ; i < n ; i++)
{
cin>>a[i];
}
method(a,n);
cout<<"sum:"<<sum<<endl;
cout<<besti + 1<<" "<<bestj + 1<<endl;
return 0;
}
动态规划——最大字段和
最新推荐文章于 2024-09-25 13:54:13 发布
该程序使用C++编写,计算给定数组中的最大连续子序列和。它遍历数组,维护当前和全局的最大子段和,并记录起始和结束索引。用户输入数组长度和数值,程序输出最大子段和及其对应区间。
摘要由CSDN通过智能技术生成