2015小米暑期实习笔试题_风口的猪-中国牛市(dp)
风口之下。猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回想历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。
如果你一開始没有股票。但有至多两次买入1股而后卖出1股的机会,而且买入前一定要先保证手上没有股票。若两次交易机会都放弃。收益为0。 设计算法。计算你能获得的最大收益。
输入数值范围:2<=n<=100,0<=prices[i]<=100
输入样例:
3,8,5,1,7,8
输出样例:
12
代码:
#include <iostream>
#include <cmath>
#include <vector> using namespace std; vector<int> prices; int calculateMax(vector<int> prices)
{
int i,nmin,nmax,len,ans;
len=prices.size();
int *lhs=new int[len];
int *rhs=new int[len]; lhs[0]=0;
nmin=prices[0];
for(i=1;i<len;i++)
{
lhs[i]=max(lhs[i-1],prices[i]-nmin);
if(prices[i]<nmin)
nmin=prices[i];
// cout<<"lhs "<<i<<" "<<lhs[i]<<endl;
} rhs[len-1]=0;
nmax=prices[len-1];
for(i=len-2;i>=0;i--)
{
rhs[i]=max(rhs[i+1],nmax-prices[i]);
if(prices[i]>nmax)
nmax=prices[i];
// cout<<"rhs "<<i<<" "<<rhs[i]<<endl;
} ans=0;
for(i=0;i<len;i++)
if((lhs[i]+rhs[i])>ans)
ans=lhs[i]+rhs[i]; return ans;
} int main()
{
int m,len;
while(cin>>m)
prices.push_back(m);
cout<<calculateMax(prices)<<endl;
return 0;
}
以下是去掉凝视的測试截图,能够直观一点
语言表达能力太差啦,以后发文会注意写凝视,亲们多多提建议哈~
#include <iostream>
#include <cmath>
#include <vector> using namespace std; vector<int> prices; int calculateMax(vector<int> prices)
{
int i,nmin,nmax,len,ans;
len=prices.size();
int *lhs=new int[len];
int *rhs=new int[len]; lhs[0]=0; //下标为0的时候卖出。利润为0
nmin=prices[0]; //假定下标为0的的价格为最低
for(i=1;i<len;i++)
{
lhs[i]=max(lhs[i-1],prices[i]-nmin); cout<<"lhs 下标 "<<i<<" : "<<nmin<<" 时买入 "<<prices[i]<<" 时还没卖出。则能获得的最大利润是 "<<lhs[i]<<endl; if(prices[i]<nmin)
nmin=prices[i];
} rhs[len-1]=0;
nmax=prices[len-1];
for(i=len-2;i>=0;i--)
{
rhs[i]=max(rhs[i+1],nmax-prices[i]); cout<<"rhs 下标 "<<i<<" : "<<prices[i]<<" 时买入 "<<nmax<<" 时还没卖出,则能获得的最大利润是 "<<rhs[i]<<endl; if(prices[i]>nmax)
nmax=prices[i];
} ans=0;
for(i=0;i<len;i++)
{
cout<<"下标 "<<i<<" : "<<prices[i]<<" 时能得到的最大利润为 "<<lhs[i]<<" 之后又能获得利润 "<<rhs[i]<<" 此时总共能获得利润 "<<lhs[i]+rhs[i]<<endl;
if((lhs[i]+rhs[i])>ans)
ans=lhs[i]+rhs[i];
} return ans;
} int main()
{
int m,len;
while(cin>>m)
prices.push_back(m);
cout<<calculateMax(prices)<<endl;
return 0;
}
再插个图片
最后给个原题的链接
哦,对了。还有谈论区
2015小米暑期实习笔试题_风口的猪-中国牛市(dp)的更多相关文章
- js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2
js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...
- 剑指Offer——京东实习笔试题汇总
剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...
- 剑指Offer——小米+小红书笔试题+知识点总结
剑指Offer--小米+小红书笔试题+知识点总结 情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事 ...
- 诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点
总结一下Microsoft Devices Group的软件类笔试题,全部笔试题分两份试卷,逻辑题一份和软件測试题一份,仅仅总结技术题喽~题目全英文,仅仅包括选择题和填空题.选择题居多.分单选和多选. ...
- 003_C/C++笔试题_分享大汇总
(一)感谢:lhzstudio 01_C++经典面试题全集 50~100道 都附带有参考答案 02_C++开发工程师面试题库 100~150道 03_C++笔试题库之编程.问答题 150~200道 0 ...
- 001_C/C++笔试题_考察C/C++语言基础概念
(一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...
- 2019 小米java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.小米等公司offer,岗位是Java后端开发,因为发展原因最终选择去了小米,入职一年时间了,也成为了面试官,之 ...
- 蘑菇街2015校招 Java研发笔试题 详解
1. 对进程和线程描述正确的是( ) A. 父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B. 改变进程里面主线程的状态会影响其他线程的行为,改变父进程的状态不会影 ...
- 阿里巴巴2015研究project普通笔试题,与答案
欢迎您对这篇文章的其他建议.我可以留言在以下平台. 个人博客网站:www.anycodex.com/blog/ Csdn博客网站:http://my.csdn.net/?ref=toolbar 微博: ...
随机推荐
- 【python】理想论坛帖子爬虫1.06
昨天认识到在本期同时起一百个回调/线程后程序会崩溃,造成结果不可信. 于是决定用Python单线程操作,因为它理论上就用主线程跑不会有问题,只是时间长点. 写好程序后,测试了一中午,210个主贴,11 ...
- Windows 之 防火墙
对于只使用浏览.电子邮件等系统自带的网络应用程序,Windows防火墙(firewall)根本不会产生影响.也就是说,用IE.OutlookExpress等系统自带的程序进行网络连接,防火 ...
- 10个最受欢迎的Java类(转)
原文:http://www.csdn.net/article/2012-06-04/2806277 每一个Java程序员都有一份属于自己的Java类排名表.这个排名表没有严格的规定,也没有可遵循的规则 ...
- tar 归档中找不到
今天在解压tar.gz包时遇到的错误: 刚开始以为是路径的问题,然后感觉是tar.gz包的问题,后来查了一下才知道,记录一下: 一定要加上那个-C 参数表示更换目录的意识 -C --dire ...
- PHP $_GET
$_GET 变量用于收集来自 method="get" 的表单中的值. $_GET 变量 $_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值. $_GE ...
- Circular dependency issuse on cocoapods version(0.36.0) 全然解决方式(非降版本号)
此前的文章中.以前提到在cocoapods依赖管理版本号假设超过0.34.4.比方0.35, 0.36.0等版本号中. 运行"pod install" 或者 "pod u ...
- python线程详解
#线程状态 #线程同步(锁)#多线程的优势在于可以同时运行多个任务,至少感觉起来是这样,但是当线程需要共享数据时,可能存在数据不同步的问题. #threading模块#常用方法:'''threadin ...
- Loadrunner脚本编程(4)-数据类型操作和字符串操作
http://www.360doc.com/content/10/0806/13/1698198_44078277.shtml 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现 ...
- 兼顾pc和移动端的textarea字数监控的实现方法
概述 pc端移动端中文本框监控字数的功能的一种较为简单的实现,考虑到安卓和IOS输入法输入过程中是否触发keyup的差异.利用监听compositionstart判断是否开启了输入法.从而实现体验较为 ...
- java 运行时环境和编译器环境
必须要保证运行环境高于编译环境 1.编译器的环境设置 单击项目右键-> Properties -> Java Compiler -> 5或6 如果编译器的环境高于运行时环境会报错. ...