题目链接:https://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493

题意:给一串数字,求出最长的波动序列。波动的定义是一个数相邻的两个数同时比他大或者同时比他小,形象的看成一个波动的三角函数吧。

定义dp(i)为到第i个数字时的最长波动序列长度,我们发现仅有一维的数组是存不下状态的,还应该再维护一个量,那就是第i个数字的时候他是波峰还是波谷。于是dp数组扩展成了dp(i,k),k可以取0或1分别表示是波峰还是波谷。更新的时候枚举第j(1~i-1)个数字,如果第i个数字和第j个数字不相同就更新,更新的时候要把i和j两个数字分别看成不同的极点。

 #include <string>
#include <vector>
#include <sstream>
#include <algorithm>
#include <iostream>
#include <cstring> using namespace std; class ZigZag {
public:
int longestZigZag(vector<int> sequence) {
int dp[][];
int n = sequence.size();
int a[];
int ret = ;
memset(dp, , sizeof(dp));
for(int i = ; i <= n; i++) a[i] = sequence[i-];
for(int i = ; i <= n; i++) {
dp[i][] = dp[i][] = ;
for(int k = ; k < ; k++) {
for(int j = ; j <= i; j++) {
if(a[i] == a[j]) continue;
if(k == ) {
if(a[i] < a[j]) dp[i][k] = max(dp[i][k], dp[j][!k]+);
}
else {
if(a[i] > a[j]) dp[i][k] = max(dp[i][k], dp[j][!k]+);
}
}
ret = max(ret, max(dp[i][], dp[i][]));
}
}
return ret;
}
};

[Topcoder]ZigZag(dp)的更多相关文章

  1. LightOJ 1033 Generating Palindromes(dp)

    LightOJ 1033  Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...

  2. lightOJ 1047 Neighbor House (DP)

    lightOJ 1047   Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...

  3. UVA11125 - Arrange Some Marbles(dp)

    UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...

  4. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  5. 初探动态规划(DP)

    学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...

  6. Tour(dp)

    Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...

  7. 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)

    .navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...

  8. Leetcode之动态规划(DP)专题-详解983. 最低票价(Minimum Cost For Tickets)

    Leetcode之动态规划(DP)专题-983. 最低票价(Minimum Cost For Tickets) 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行.在接下来的一年里,你要旅行的 ...

  9. 最长公共子序列长度(dp)

    /// 求两个字符串的最大公共子序列长度,最长公共子序列则并不要求连续,但要求前后顺序(dp) #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. 【BZOJ】【1004】【HNOI2008】Cards

    Burnside/Polya+背包DP 这道题目是等价类计数裸题吧……>_> 题解:http://m.blog.csdn.net/blog/njlcazl_11109/8316340 啊其 ...

  2. c++11 lambda(匿名函数)

    #include <iostream> #include <functional> using namespace std::placeholders; //lambda即匿名 ...

  3. C51关键字

    C51 中的关键字 关键字 用途 说明 auto 存储种类说明 用以说明局部变量,缺省值为此 break 程序语句 退出最内层循环 case 程序语句 Switch语句中的选择项 char 数据类型说 ...

  4. HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript

    HOWTO: Create native-looking iPhone/iPad applications from HTML, CSS and JavaScript Though it's not ...

  5. ol3简介

    ol3从根本上进行了重新设计,相对于ol2,他符合现代浏览器的一些设计理念,使用了js新的特性,initial版本的目的是支持原来ol2的大多数功能,支持公网上流行的缓存切片,支持常见的矢量数据格式. ...

  6. 远程数据源Combobox

    Ext.define('bookInfo', {          extend: 'Ext.data.Model',//新类继承自model          fields: [{ name: 'b ...

  7. PHP-Java-Bridge使用笔记,2014年9月最新版

    这是我在做平安银行开发的时候,本地使用PHP环境,平安银行接口为Java接口的时候,采用PHP-Java-Bridge的方式调用接口的笔记.因为现在网上的教程基本上都不行了,所以在这里贴出我能使用的而 ...

  8. (转)Eclipse平台技术概述

    转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833    Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...

  9. (转)Learning to Rank for IR的评价指标—MAP,NDCG,MRR

    转自:http://www.cnblogs.com/eyeszjwang/articles/2368087.html MAP(Mean Average Precision):单个主题的平均准确率是每篇 ...

  10. 【剑指offer】题目38 数字在排序数组中出现的次数

    思路: 应该是用二分查找分别找到该数字第一次和最后一次出现的位置,相减即可.O(logn) int findLeft(int a[], int n, int num) { , r = n - ; wh ...