2017阿里C/C++暑期实习生在线笔试附加题编程题之一。。
来源:互联网 发布:pano2vr软件下载 编辑:程序博客网 时间:2024/05/22 06:51
2017/4/26 21:36.。。刚刚做完阿里在线笔试,内心复杂QAQ。。自己太水了,编程愣是卡了好久没做出来。。第一题最后已经来不及提交了。。
题意大致如下:
n只股票,共m 轮进行股票操作,如果卖出股票需要交税卖出时股价的P倍率,问假设有1元钱,m轮之后最多多少钱。可以买double型的股。。
当时估计脑子进水卡了好久。。。总想着分成在股和资金在手两种情况进行DP。。事实上,这题目就是一个dijstra的变形版。。。当然也有可能我这会儿还不会做以为自己做出来了23333333333.。其实这道题我们对distance[m][m]首先初始化为0,路径用乘法,dis[i][j]选择1和i轮和j轮涨幅最大的股票去税的最大值,然后就是一个O(n3)的循环。。代码如下:
#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
/*请完成下面这个函数,实现题目要求的功能*/
/*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ */
/******************************开始写代码******************************/
double findm(int s,int e,int n,double p,const vector<vector<double>>& prices)
{
double res = 1.0;
for(int i = 0;i<n;i++)
{
res = max(res,(prices[e][i]/prices[s][i])*(1-p));
}
return res;
}
double StockGod(int n, int m, double p, const vector<vector<double>>& prices)
{
vector<vector<double> > dis(m, vector<double>(m,0) );
for(int i = 0;i<m;i++)
{
for(int j = i+1;j<m;j++)
{
dis[i][j] = max(1.0, findm(i,j,n,p,prices) );
}
}
for(int i = 0;i<m;i++)
{
for(int j = 0;j<m;j++)
{
for(int k = 0;k<m;k++)
{
if(dis[i][j] < dis[i][k]*dis[k][j])
dis[i][j] = dis[i][k]*dis[k][j];
}
}
}
return dis[0][m-1];
}
/******************************结束写代码******************************/
int main()
{
int n = 0;
int m = 0;
double p = 0;
cin >> n >> m >> p;
vector<vector<double>> prices;
for(int i = 0; i < m; ++i) {
prices.push_back(vector<double>());
for(int j = 0; j < n; ++j) {
double x = 0;
cin >> x;
prices.back().push_back(x);
}
}
double final = StockGod(n, m, p, prices);
printf("%.1f\n", final);
return 0;
}
可见,总共只需要写29行代码QAQ。。。当然,有可能我到现在都不会做这道题,请大神们赐教QAQ,怎么办,要失业了。。。我好水。。第二题题目都看不懂23333
- 2017阿里C/C++暑期实习生在线笔试附加题编程题之一。。
- 乐视2017暑期实习生笔试编程题
- 腾讯2017暑期实习生编程题-C-有趣的数字
- 2017阿里研发工程师C/C++实习生招聘笔试题
- 2017阿里实习生在线编程题
- 腾讯笔试编程题(2017暑期实习生编程题)
- [笔试编程题] 腾讯2017暑期实习生编程题-java
- 阿里在线笔试算法工程师附加题
- [笔试练习]腾讯2017暑期实习生编程题
- 2017年江苏电信暑期实习生笔试编程题
- 阿里2015暑期实习生数据分析笔试题 部分
- 阿里2015实习生笔试附加题第一个
- 2015.4.2阿里c/c++实习生笔试最后一题
- 京东2017实习生笔试编程题-终结者C
- 阿里内推实习生在线编程题
- 阿里巴巴暑期实习生笔试题
- 阿里2017前端实习生笔试编程第一题
- 阿里2017实习生招聘笔试-编程题-逆波兰
- 第二本书unit4分区
- 不同操作系统下域名解析文件是不同的
- SPOJ
- 我的python进阶之路二
- 一个简单的网页系统(-) 首页
- 2017阿里C/C++暑期实习生在线笔试附加题编程题之一。。
- mongodb学习笔记--C++操作mongodb
- Makefile 使用总结
- 完整学习笔记之Android基础(简版)
- Linux基础学习之如何修改虚拟机中centos锁屏时间(图形界面下)
- tabhost TabSpec执行setContent时出现空指针异常NullPointerException
- Codevs 2822 爱在心中
- fflush()
- 第一次用verilog调试串口(发送、接收)