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 微博: ...
随机推荐
- iOS单元測试:Specta + Expecta + OCMock + OHHTTPStubs + KIF
框架选择 參考这篇选型文章,http://zixun.github.io/blog/2015/04/11/iosdan-yuan-ce-shi-xi-lie-dan-yuan-ce-shi-kuang ...
- C#.NET常见问题(FAQ)-interface接口如何理解
个人把interface理解为一种比较特殊的判断技巧,不是常规的变量类型比如判断字符串,判断数组,而是判断类的实例是否拥有某些属性或者方法(比如有十个女的穿一样的衣服,头上盖住,让新郎去猜哪一个是他的 ...
- A Package Manager for Xcode -Xcode模板管理工具Alcatraz使用
一款功能强大的Xcode模板管理工具 一:安装之后的效果图 二:安装 1:先关闭 xcode 2: 打开 terminal 3: 复制粘贴运行如下代码 mkdir -p ~/Library/App ...
- “最大子序列和”算法 java
maxSubSum各自是最大子序列和的4中java算法实现. 第一种算法执行时间为O(N^3),另外一种算法执行时间为O(N^2),第三种算法执行时间为O(nlogn),第四种算法执行时间为线性N p ...
- HTTP请求响应码
① 客户方错误 100 继续 101 交换协议 ② 成功 200 OK 201 已创建 202 接收 203 非认证信息 204 无内容 205 重置内容 206 部分内容 ③ 重定向 300 多路选 ...
- python之函数用法setattr(),了解即可
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setattr(),了解即可 #http://www.cnblogs.com/hong ...
- Tomcat servers.xml 无注释版
<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOW ...
- 在Loadrunner中如何用system函数执行系统命令
前提: windows 系统 实现功能:用 LR 中的system函数执行系统命令 相关功能:在LR中利用C函数建立文件,写文件,读文件. 主要相关函数:sprintf/fopen/fgetc/fre ...
- m2a-vm超频的方法
m2a-vm超频的方法 此帖对"华硕超频俱乐部"的评论 要超频的话,bios要进行相应的设置, 1.jumperfree选项下 cpu multiplier 改cpu的倍频 ...
- login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...