题目是这样的:给定一个A1,A2…An求i,j使得Ai加到Aj最大,主要是输出这个最大值是多少。
代码如下
#include <iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxn = 10010;
int dp[maxn];
int A[maxn];
int main()
{
int n;
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
scanf_s("%d", &A[i]);
}
dp[0] = A[0];
for (int i = 1; i < n; i++)
{
dp[i] = max(dp[i - 1] + A[i], A[i]);
}
int j = 0;
for (int i = 0; i < n; i++)
{
if (dp[i] > dp[j])
j = i;
}
printf("%d", j);
}
简单的的动态规划问题,纪念一下