今天决定掉头撸dp。。
来源:互联网 发布:了解云计算 编辑:程序博客网 时间:2024/04/27 18:01
在网上找了文章,,大概讲了这题,,
一个有N个元素的整型数组arr,有正有负,数组中连续一个或多个元素组成一个子数组,这个数组当然有很多子数组,求子数组之和的最大值。例如:[0,-2,3,5,-1,2]应返回9,[-9,-2,-3,-5,-3]应返回-2。
然后,,给出的代码是
/* DP base version*/
#define max(a,b) ( a > b ? a : b)
int Maxsum_dp(int * arr, int size)
{
int End[30] = {-INF};
int All[30] = {-INF};
End[0] = All[0] = arr[0];
for(int i = 1; i < size; ++i)
{
End[i] = max(End[i-1]+arr[i],arr[i]);
All[i] = max(End[i],All[i-1]);
}
return All[size-1];
}
然后我想起来了几个月前我做的一道题
题目描述 Description
给一个数组a1, a2 ... an,找到最长的上升降子序列ab1<ab2< .. <abk,其中b1<b2<..bk。
输出长度即可。
输入描述 Input Description
第一行,一个整数N。
第二行 ,N个整数(N < = 5000)
输出描述 Output Description
输出K的极大值,即最长不下降子序列的长度
样例输入 Sample Input
5
9 3 6 2 7
样例输出 Sample Output
3
然后我的代码是这样子的,,
#include<iostream>#include<algorithm>using namespace std;struct node{int id,num,mx;}a[5000];int main(){int n,mx=0;cin>>n;for(int i=1;i<=n;i++){cin>>a[i].num;a[i].id=i;a[i].mx=1;}int v=1;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(a[j].num<=a[i].num){continue;}else{a[i].mx++;a[i].num=a[j].num;}}v=(v>a[i].mx)? v:a[i].mx;}cout<<v;return 0;}感觉好暴力啊,,但是跑得还挺快ORZ。
0 0
- 今天决定掉头撸dp。。
- 掉头
- 今天决定开始写日记
- 今天我决定考研
- 今天,我决定
- 今天做的决定
- 今天决定要开博啦
- 今天决定去做现货
- 今天的决定
- 今天决定写博客
- 今天决定在这安家。
- 今天,我决定辞职了
- 今天决定下班晚点回去
- 今天突然决定开始戒烟
- 今天决定写博客了。。。
- 今天 我决定写博客
- 今天决定好好放松一下
- 今天开始决定写博客
- python socket编程详细介绍
- CSU-ACM2016暑假集训比赛11
- AFN文件上传 appendPartWithFileData:<#(nonnull NSData *)#> name:<#(nonnull NSString *)#>
- PHP+MySQL 分页那点事
- 工作一年,心路历程
- 今天决定掉头撸dp。。
- Android 应用程序之间数据共享
- 第一行代码,UI开发部分<一>
- SQL Server:触发器详解
- 线段树+优化(hdu 5828 hdu 4027)
- [转]图论基础题合集
- 数据结构实验之排序一:一趟快排
- Android中如何在应用A中启动或安装应用B
- 2548. 【NOIP2011模拟9.4】最大正方形 (StandardIO)