小米笔试题(动态规划)

风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100 
输入例子:

3,8,5,1,7,8
 
输出例子:

12

 1 #include <iostream>
 2 #include <vector>
 3
 4 using namespace std;
 5
 6 int calculateMax(vector<int> prices);
 7
 8 int main()
 9 {
10     int b[6] = {3,8,5,1,7,8};
11     vector<int> a(b, b + 6);
12
13     cout << calculateMax(a) << endl;
14     return 0;
15 }
16
17 int calculateMax(vector<int> prices) {
18
19     int length = prices.size();
20     int maxM = 0;
21     int i,j,counts;
22     //dynamic programming is create a form
23     //just like sub[][]=0
24     vector<vector<int> >suboptimization(length ,vector<int>(3, 0));
25
26     for(i = 1; i < length; i ++){
27
28             for(counts = 1; counts < 3; counts ++){
29                     maxM = suboptimization[i - 1][counts];
30
31                 for(j = 0; j < i; j++ ){
32                   maxM = max(maxM, suboptimization[j][counts - 1] + prices[i] - prices[j]);
33                 }
34                 suboptimization[i][counts] = maxM;
35             }
36
37     }
38
39
40     return suboptimization[length - 1][2];
41 }

用动态规划做的具体不解释。
时间: 2024-12-17 06:22:46

小米笔试题(动态规划)的相关文章

小米笔试题中遇到的关于学生成绩查询的几个SQL语句

数据库有三个字段,名字.学科.成绩,如图 1. 找出每科成绩最高的学生的名字与分数 2.找出总分最高的学生名字与总分 3.找出三科成绩均大于80分的学生

小米笔试题

题目:世界上有10种人,一种懂二进制,一种不懂.那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么? 输入例子: 1999 2299 输出例子: 7 背景知识:将两个二进制数变成等长(较短的那个高位补0),然后将两个二进制数进行按位“异或”,结果中为1的那些位,就是这两个二进制数不同的位. 在计算机中的数据的保存和运算都是以二进制的形式进行的,但不是直接的原码,而是原码的补码,也就是说在计算机中,数据的运算都是以数据的补码进行的. 异或: 异或(xor)是一个数学运算符.

几个论坛上看到的2015小米笔试题

一. 题目描写叙述 大家对回文串不陌生吧?一个字符串从前看和从后看假设一样的话.就是回文串.比方"上海自来水来自海上"就是一个回文串. 如今我们的问题来了.把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高. c++: bool isPalindromeNumber(long num); java: boolean isPalindromeNumber(long num); 解题思路 1.将long转换为字符串.从头和尾向中间扫描就可以 2.每次取出

求出对应N的所有合法匹配括号 (DFS)---小米笔试题

给定N对括号,输出其所有的合法的组合状态,例如,N=3,所有的合法状态为:"((()))", "(()())", "(())()", "()(())", "()()()": 解析: 还是深搜DFS的思路,深搜的过程关键在于记录已经用掉的左括号个数和右括号的个数,当用过的左括号个数小于右括号则非法:当二者个数和大于2N则非法:当二者个数相等且数目等于2N则为合法. 代码如下: #include <ios

小米笔试题:无序数组中最小的k个数

题目描述 链接:https://www.nowcoder.com/questionTerminal/ec2575fb877d41c9a33d9bab2694ba47?source=relative 来源:牛客网 无序数组中最小的k个数 对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致. 给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数. 测试样例: [1,2,4,3],4,2 返回:[1,2] 代码 需要保留K个较小的元素,可以删

c++笔试题贪吃蛇问题

贪吃蛇 现在有一个N*M(N,M=100)的方形矩形,在这个矩形的每一个方格上都放有一个随机值,一条可爱的小蛇从矩形的 左上角开始出发,每次移动都只能移动一格,向右或向下,而每到达一格贪吃的小蛇都会吧该位置上的值吃个一干二净,直到到达右下角时停止.而贪吃的小蛇不怕撑死,它只想吃到最多,并输出路径. #include <iostream> #include<string> #include <cstring> #include<vector> #include

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w

剑指Offer——当当+搜狐+好未来笔试题+知识点总结

剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回顾 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3场笔试中好未来相对简单点. 好未来编程题 马踏棋盘(贪心算法) ??马踏棋盘是经典的程序设计问题之一,主要的解决方案有两种:一种是基于深度优先搜索的方法,另一种是基于贪婪算法的方法.第一种基于深度优先搜索(DFS)的方法是比较常用的算法,深度优先搜索算法也是数据结构中的经典算法之一,主要是采用递归的

PHP笔试题总结1

---恢复内容开始--- 1.1    PHP中判断变量的相关函数 1.2    strlen( )与mb_strlen( )的作用分别是什么(新浪网技术部) strlen 和mb_strlen 都是用于获取字符串长度的,其中strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数,如果是多字节编码,如gbk和utf8,使用strlen得到的不是字符串的个数,而是该字符串的总字节数,可以使用mb_strlen获取其字符个数,使用mb_strlen要注意两点,一是要开启mbstring