#include<iostream>
using namespace std;
#define N 5
struct number
{
int start, end, date;
};
int *arr,max;
number *dp;
void input(){
arr = new int[N];
dp = new number[N];
for (int i = 0; i < N ; i++){
cin >> arr[i];
}
for (int i = 0; i < N; i++){
dp[i].date = 0;
dp[i].start = 0;
dp[i].end = 0;
}
}
void getDpMax(){
dp[0].date = arr[0];
max = 0;
for (int i = 1; i < N; i++){
if (dp[i - 1].date < 0){
dp[i-1].end = i - 1;
dp[i].date = arr[i];
dp[i].start = i;
}
else{
dp[i].date =dp[i-1].date + arr[i];
dp[i].end = i;
}
if (dp[i].date > max) max = dp[i].date;
}
}
int main(){
input();
getDpMax();
for (int i = 0; i < N; i++){
if (dp[i].date == max) cout << "strat:" << dp[i].start+1 << " end:" << dp[i].end+1 << endl;
}
cout <<" max:"<< max;
}
求最大子串
最新推荐文章于 2020-10-28 19:18:04 发布