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 微博: ...
随机推荐
- easyui combotree模糊查询
技术交流QQ群:15129679 让EasyUI的combobox和combotree同时支持自定义模糊查询,在不更改其他代码的情况下,添加以下代码就行了: /** * combobox和combot ...
- java编程思想 第四版 第六章 个人练习
欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...
- 消息队列的使用场景(转载c)
作者:ScienJus链接:https://www.zhihu.com/question/34243607/answer/58314162来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...
- Java从零开始学二十六(包装类)
一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...
- POJ - 1325 Machine Schedule 二分图 最小点覆盖
题目大意:有两个机器,A机器有n种工作模式,B机器有m种工作模式,刚開始两个机器都是0模式.假设要切换模式的话,机器就必须的重新启动 有k个任务,每一个任务都能够交给A机器的i模式或者B机器的j模式完 ...
- Excel还是那些事
文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- MySQL查看表结构三种方法
1:desc T1 2:EXPLAIN T1 3:SHOW COLUMNS FROM T1
- 【VMware】宿主机连接wifi,虚拟机中的Linux系统配置连接wifi
环境描述 宿主机:Windows 10 64bit 虚拟机:Centos 第一步:虚拟机设置 选择连接方式为NAT 第二步:设置宿主机的wifi 控制面板>>网络和Internet> ...
- R语言-查找满足条件的数并获取索引
1.在R语言中,怎样找到满足条件的数呢? 比如给定一个向量c2.要求找到数值大于0的数: > c2 [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.06 0.09 0. ...
- 解决:Access denied for user ''@'sinochip-79e833' (using password: NO)
uthentication to host '' for user '' using method 'mysql_native_password' failed with message: Acces ...