您的位置:首页 > 其它

Problem-C

2016-05-16 21:05 176 查看
概述:给出一个数字序列,让从某一点开始行走,每走一步求和,走的每一步必须比上一步的数字大。

思路:设置一个数组,每走一步,如果满足要求,将这个位置的数与之前的数相加,记录在数组里,最后数组求最大值,就是问题的解。

感想:从测试数据中看出来是一个求最大和的问题,翻译没看开始写代码。。题目不难,但是提交时又忘记fstream,做错一次。。

#include<iostream>
#include<fstream>
#include<string.h>
#include<algorithm>

using namespace std;

int main()
{
//ifstream cin("in.txt");
int n, max;
int a[1005];
int dp[1005];
while (cin >> n&&n)
{
for (int i = 1;i <= n;i++)
cin >> a[i];
dp[1] = a[1];
max = dp[1];
for (int i = 2;i <= n;i++)
{
dp[i] = a[i];
for (int j = 1;j <= i;j++)
{
if (a[j]<a[i] && dp[j] + a[i]>dp[i])
dp[i] = dp[j] + a[i];
}
}
for (int i = 1;i <= n;i++)
if (max < dp[i])
max = dp[i];
cout << max << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: