zoukankan      html  css  js  c++  java
  • 87等差数列划分(413)

    作者: Turbo时间限制: 1S章节: 动态规划

    晚于: 2020-09-02 12:00:00后提交分数乘系数50%

    截止日期: 2020-09-09 12:00:00

    问题描述 :

    如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

    例如,以下数列为等差数列:

    1, 3, 5, 7, 9

    7, 7, 7, 7

    3, -1, -5, -9

    以下数列不是等差数列。

    1, 1, 2, 5, 7

    数组 A 包含 N 个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。

    如果满足以下条件,则称子数组(P, Q)为等差数组:

    元素 A[P], A[p + 1], ..., A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 。

    函数要返回数组 A 中所有为等差数组的子数组个数。

    示例:

    A = [1, 2, 3, 4]

    返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。

    输入说明 :

    首先输入数组 A的长度 N

    然后输入N个整数,以空格分隔

    输出说明 :

    输出一个整数

    输入范例 :

    输出范例 :

    #include <iostream>
    #include <vector>
    using namespace std;
    /*
    dp[i]表示以A[i]为结尾的等差子区间的个数,
    当 A[i] - A[i-1] == A[i-1] - A[i-2],有dp[i]=dp[i-1]+1,否则dp[i]=0。
    最后所求的所有等差子数组个数即为dp数组的求和。
    */
    
    class Solution {
    public:
        int numberOfArithmeticSlices(vector<int>& A) 
        {
            vector<int> dp(A.size());
            if(A.size()<3)
                return 0;
            dp[0]=0;
            dp[1]=0;
            dp[2]=(A[1]-A[0]==A[2]-A[1])?1:0;
            
            for(int i=3;i<A.size();i++)
            {
                if((A[i]-A[i-1])==(A[i-1]-A[i-2]))
                    dp[i]=dp[i-1]+1;
                else
                    dp[i]=0;
            }
            int sum=0;
            for(int i=0;i<A.size();i++)
            {
                sum+=dp[i];
            }
            return sum;
        }
    };
    int main()
    {
        int n,data;
        vector<int> nums;
        cin>>n;
        for(int i=0; i<n; i++)
        {
            cin>>data;
            nums.push_back(data);
        }
        int res=Solution().numberOfArithmeticSlices(nums);
        cout<<res<<endl;
        return 0;
    }
  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/zmmm/p/13654886.html
Copyright © 2011-2022 走看看