【牛客网】马三来刷题之数组单调和

来源:互联网 发布:免费签名设计软件 编辑:程序博客网 时间:2024/04/29 12:48

这几天放假回家了,没刷题,心里满满的愧疚感~,题目链接:http://www.nowcoder.com/practice/8397609ba7054da382c4599d42e494f3?tpId=49&tqId=29364&rp=1&ru=/ta/2016test&qru=/ta/2016test/question-ranking

数组单调和
  • 热度指数:1274时间限制:3秒空间限制:32768K
  • 本题知识点: 查找 动态规划
  •  算法知识视频讲解

题目描述

现定义数组单调和为所有元素i的f(i)值之和。这里的f(i)函数定义为元素i左边(不包括其自身)小于等于它的数字之和。请设计一个高效算法,计算数组的单调和。

给定一个数组A同时给定数组的大小n,请返回数组的单调和。保证数组大小小于等于500,同时保证单调和不会超过int范围。

测试样例:
[1,3,5,2,4,6],6
返回:27
刚开始想开一个数组用动态规划来做的,数组中每个元素存的是自己的单调和F[i],然后最后一个循环把他们加起来就可以了。后来发现时间卡的不是很紧,用了两个for循环也能过~

int calcMonoSum(vector<int> A, int n){    int sum = 0;    for(int i=1; i<n; i++)    {        int fi = 0;        for(int j=0; j<i; j++)            if(A[j]<=A[i])                fi+= A[j];        sum += fi;    }    return sum;}


每天一道题,保持新鲜感,就这样~

0 0