1. 问题描述
给定一个数字序列,A1,A2…An,求i,j,使得Ai + …+ Aj最大,输出这个最大和。
2. 动态规划
int arr[20], dp[20];
int index = 0;
int max_sum = 0;
int n;
while (cin >> n)
{
arr[index++] = n;
}
for (int i = 0; i < index; i++)
cout << arr[i] << " ";
cout << endl;
dp[0] = arr[0];
for (int i = 1; i < index; i++)
{
dp[i] = max(arr[i], arr[i] + dp[i - 1]);
}
for (int i = 0; i < index; i++)
if (dp[i] > max_sum)
max_sum = dp[i];
cout << max_sum << endl;