说明及代码如下:
/***
本程序完成求子序列最大和的任务
输入:若干整数,有正数有负数
输出:这串整数的子序列的最大子序列和
***/
#include <iostream>
using namespace std;
int main()
{
int num; //序列中元素的个数
int i, j, k; //i,j,k作为循环变量
int m, n; //m,n用来存放最大子序列开始元素和结束元素的下标
int maxSum = 0; //最终输出的结果,即最大和
cout << "Enter the number of integers: ";
cin >> num;
int a[num];
for(i=0; i<num; i++)
cin >> a[i]; //整数输入
for(i=0; i<num; i++) //用于获取最大子序列及最大子序列的和
for(j=i; j<num; j++)
{
int thisSum = 0;
for(k=i; k<=j; k++)
{
thisSum += a[k];
if(thisSum > maxSum)
{
maxSum = thisSum;
m = i;
n = j;
}
}
}
cout << "最大子序列为: ";
for(int temp=m; temp<=n; temp++)
cout << a[temp] << " ";
cout << endl << "最大子序列的和为: " << maxSum << endl;
return 0;
}
运行结果: