求一个数组中等差递减区间个数,等差数列必须是连续的。 
Example:
A = [1, 2, 3, 4]
return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.

分析:用动态规划解决问题的关键是找到每个问题的核心公式,并且知道如何存表。例如本题,我们需要一个存储总数的变量,和一个存储差量的变量。
什么是等差数列? A[i]-A[i-1]=A[i-1]-A[i-2]

#include<iostream>//数组长大于3
//dp[i] 表示到i位置时,子数组的个数
//数组中等差递增区间个数        ,等差数列要是连续的
class Solution {
public:int numberOfArithmeticSlices(int a[]) {int res = 0, n = 5;int dp[10] = {0};for(int i = 2; i < n; i++){if(a[i] - a[i-1] == a[i-1] - a[i-2])dp[i] = dp[i - 1] + 1;std::cout << res << "," << dp[i] << std::endl;res += dp[i];}return res;}
};int main(){int a[] = {1, 2, 3, 4, 5};Solution s;int n = s.numberOfArithmeticSlices(a);std::cout<< "n=" << n << std::endl;
}

打印:

0,1
 1,2
 3,3
 n=6

//                                                                                                  dpi  res
// i = 2   123                                                                                     1   1
// i = 3   123 234 1234                                                                     2   3
// i = 4   123 234 345 1234 2345 12345                                          3   6
// i = 5   123 234 345 456 1234 2345 3456 12345 23456 123456  4   10

其实仔细观察这就是一个斐波拉切数列,0,1....n-2数的求和,动态规划找到方程了就发现非常简单了,这就是规律,但需要自己 去发现这个规律,有些题目咋看一脸懵逼,仔细看就会发现其中的规律。

学习地址:http://www.mamicode.com/info-detail-2634216.html

动态规划之等差递减区间个数相关推荐

  1. 数值分区间_EXCEL统计区间个数的专属函数

    这次我们学习一个新的函数! 数字区间个数统计 如下图,要求统计四个成绩区间段的人数. 如果只统计一个区间内的人数,比如上图统计60-80分之间的人数,你会怎么办呢? 1.条件计数 =COUNTIF(B ...

  2. RUST等差分解一个数

    fn main(){println!("等差分解一个数");get_num_list(33,1.0); } fn get_num_list(n:i32,num:f32) {let ...

  3. python等差分解一个数

    #等差分解一个数 # 假设等差差值为1 计算前n项和 s def n_sum_sepl(n,num):s=(n+1)*n/2cha=num/scha_list=[]for i in range(1,n ...

  4. 提高篇 第五部分 动态规划 第1章 区间类动态规划

    https://blog.csdn.net/guoyangfan_/article/details/81162689 动态规划(四)--区间型动态规划_布纸所云-CSDN博客 [算法详解]区间动态规划 ...

  5. 树状数组 区间加 区间求和_EXCEL统计区间个数的专属函数

    这次我们学习一个新的函数! 数字区间个数统计 如下图,要求统计四个成绩区间段的人数. 如果只统计一个区间内的人数,比如上图统计60-80分之间的人数,你会怎么办呢? 1.条件计数 =COUNTIF(B ...

  6. 3574. 乘积数量(连乘乘积为负数的区间个数,前缀和)

    3574. 乘积数量 输入样例1: 5 5 -3 3 -1 1 输出样例1: 8 7 输入样例2: 10 4 2 -4 3 1 2 -4 3 2 3 输出样例2: 28 27 输入样例3: 5 -1 ...

  7. 2017滴滴出行笔试题:异或和为0的最大区间个数

    两个bit的异或(下文均用^代表异或运算):1^0=1 0^1=1 1^1=0 0^0=0,也就是左右元素不同时为1,相同时为0. 对于两个int的异或,就是对它的二进制表示的每一位进行异或运算,比如 ...

  8. 动态规划/贪心 - 无重叠区间

    动态规划 dp[i]dp[i]dp[i]表示以区间iii结尾,可以共存最多的区间数量. dp[i]=max(dp[i],dp[j]+1)dp[i] = max(dp[i], dp[j] + 1)dp[ ...

  9. 动态规划训练6 [统计单词个数]

    [问题描述] 给出一个长度不超过 200 的由小写英文字母组成的字母串 ( 约定:该字母串以每行 20 个字母的方式输 入,且保证每行一定为 20 个 ) .要求将此字母串分成 k 份 (1<k ...

最新文章

  1. 从头开始学习Adobe Photoshop CC图像编辑
  2. TScreen 类 - 获取字体列表
  3. 如何理解 Web API
  4. spring 整合junit进行测试
  5. Pimple - 一个简单的 PHP 依赖注入容器
  6. 2011年5月19日盘后分析:把握行情运行主线 静待大盘明确信号
  7. 设计模式的七大设计原则:其二:接口隔离原则
  8. STM32:关于DMA,TCM(ITCM和DTCM)和Cache的理解
  9. 系统运维包括哪些内容_UI设计内容包括哪些?
  10. 白盒测试工具―Winams
  11. 易语言输出mysql日志_个人理解的易语言下的日志总结(备忘)
  12. Echars 如何描绘世界地图
  13. 大话数据结构 code 第四章 04斐波那契函数_Fibonacci
  14. java基础 day-17 设计模式(单例,工厂,代理),静态动态代理,数据库连接池(动态代理)
  15. PCIe+Switch高速存储方案设计
  16. 末日的传说 洛谷p1338
  17. C语言文件读写(1)-文本文件读操作
  18. 小白大学生学习MyBatis(二)
  19. TextRank方法的优化——MMR(最大边界相关算法)
  20. 两台pc如何高速度传输大文件

热门文章

  1. 2019/1/14,15 Python今日收获
  2. Java数据库连接池实现原理
  3. selenium-webdriver(python) (十六) --unittest 框架
  4. java中的接口中的方法
  5. How to Use Git
  6. android 通过GPS获取用户地理位置并监听位置变化
  7. DataSet.Relations一例
  8. 【干货分享】云服务平台的架构及优势(上)
  9. Velocity的layout功能
  10. Linux系统主机之间建立信任关系