风口之下。猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回想历史的机会,已知一支股票连续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小米暑期实习笔试题

哦,对了。还有谈论区

风口的猪-中国牛市

2015小米暑期实习笔试题_风口的猪-中国牛市(dp)的更多相关文章

  1. 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. ...

  2. 剑指Offer——京东实习笔试题汇总

    剑指Offer--京东实习笔试题汇总 编程题1 题目的详细信息已经记不住,只能大致描述一下,就是求最有价值的的委托信息. n.s.B.S其中n代表委托信息,s要求的最有价值的委托信息的个数,B代表买入 ...

  3. 剑指Offer——小米+小红书笔试题+知识点总结

    剑指Offer--小米+小红书笔试题+知识点总结 情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验室 事 ...

  4. 诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点

    总结一下Microsoft Devices Group的软件类笔试题,全部笔试题分两份试卷,逻辑题一份和软件測试题一份,仅仅总结技术题喽~题目全英文,仅仅包括选择题和填空题.选择题居多.分单选和多选. ...

  5. 003_C/C++笔试题_分享大汇总

    (一)感谢:lhzstudio 01_C++经典面试题全集 50~100道 都附带有参考答案 02_C++开发工程师面试题库 100~150道 03_C++笔试题库之编程.问答题 150~200道 0 ...

  6. 001_C/C++笔试题_考察C/C++语言基础概念

    (一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...

  7. 2019 小米java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.小米等公司offer,岗位是Java后端开发,因为发展原因最终选择去了小米,入职一年时间了,也成为了面试官,之 ...

  8. 蘑菇街2015校招 Java研发笔试题 详解

    1. 对进程和线程描述正确的是( ) A.  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B.  改变进程里面主线程的状态会影响其他线程的行为,改变父进程的状态不会影 ...

  9. 阿里巴巴2015研究project普通笔试题,与答案

    欢迎您对这篇文章的其他建议.我可以留言在以下平台. 个人博客网站:www.anycodex.com/blog/ Csdn博客网站:http://my.csdn.net/?ref=toolbar 微博: ...

随机推荐

  1. 装上了Fedora19

    超期服役的Aspire黑机器在一个下午主动退役了,为了填补它留下的空白,趁JD减价入手了一台宏碁(acer) SQX4610 120N,就为了玩Linux. 这机器用光驱启动有些特殊,需要在启动时不断 ...

  2. Opera Unit如何自定义My Opera的网页界面

    1 双击Opera Unite Home进入你的个人主页 2 点击你的头像进入你的个人信息设置页面,然后点击右上角的设置图标 3 在下拉菜单中选择"Customize design" ...

  3. Angular CLI的安装及使用

    安装命令行 npm install -g @angular/cli 检查命令行 ng v 使用这个命令可以检查 angular cli是否安装成功.我检查的时候发现没有安装成功,提示我使用的node. ...

  4. 应用程序正常初始化(0xc0000135)失败的解决方法

    转自:http://blog.sina.com.cn/s/blog_64fba4e00100mzf9.html 这是由于没有安装.NET framework 所造成的,请安装.NET framewor ...

  5. NDK 编译armebai-v7a的非4字节对齐crash Fatal signal 7 (SIGSEGV) 错误解决

    一直都是编译armabi的.没有不论什么问题,这个架构是软件模拟浮点运算的. 后来看到NDK文档上说armabi-v7a是针对有硬件处理浮点计算的arm cpu的. 于是就改动配置编译armebai- ...

  6. UVa 10642 - Can You Solve It?

    题目:二维平面上的整数点.用路径链接起来(0,0)->(1.0)->(0.1)->(2,0)->.. 给你两点坐标.求两点间步长(在路径上的距离). 分析:简单题. 我们发现点 ...

  7. mysql 创建表单

    1.表名:Customer 属性: ID   字符型  最大10个字符   ——顾客编号 NAME   字符型  最大16个字符   ——顾客姓名 SEX     字符型  最大2个字符   ——性别 ...

  8. JVM:垃圾回收机制和调优手段

    转载请注明出处: jiq•钦's technical Blog - 季义钦 引言: 我们都知道JVM内存由几个部分组成:堆.方法区.栈.程序计数器.本地方法栈 JVM垃圾回收仅针对公共内存区域即:堆和 ...

  9. 解决openssh TimeOut

    SSH Client:ServerAliveInterval 100 SSH server:ClientAliveInterval 30TCPKeepAlive yes ClientAliveCoun ...

  10. Android4.0-4.4 加入实体按键振动支持的方法(java + smali版本号)

    有些手机比方泛泰A820L, 泛泰A890 A900 以及Nubia Z5S 和Z5S mini具有实体按键(这里所说的实体按键是相对于虚拟按键而言, 包括物理按键和触摸屏上多出来的触摸实体按键), ...