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;
}
思路:设置一个数组,每走一步,如果满足要求,将这个位置的数与之前的数相加,记录在数组里,最后数组求最大值,就是问题的解。
感想:从测试数据中看出来是一个求最大和的问题,翻译没看开始写代码。。题目不难,但是提交时又忘记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;
}
相关文章推荐
- Extjs-panel-collapse 相关属性使用记录
- Android监听回调的一些理解
- 手机开发实战22——GPRS移动性管理2
- shell脚本
- Javascript闭包(Closure)
- 如何使用storyboard和xib
- linux下删除所有.svn目录
- 关于UIView的autoresizingMask属性 学习
- ListView、GridView实现下拉刷新上拉加载更多
- 手机开发实战21——GPRS移动性管理1
- 手机开发实战20——GPRS区域定义
- IPC—进程间的通信(信号量,共享内存,消息队列)
- Error running Tomcat8: Address localhost:1099 is a
- 表单验证
- UVA796 - Critical Links(Tarjan求桥)
- Mybatis 框架使用的最核心内容(一):Mybatis的特点和映射管理
- 图片的LruCache缓存和DiskLruCache缓存
- 欢迎使用CSDN-markdown编辑器
- Intent
- Unity编辑器扩展之EditorWindow