关注
#include <iostream>
#include <vector>
#include <cstdio>
#include <algorithm>
using namespace std;
/*请完成下面这个函数,实现题目要求的功能*/
/*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ */
/******************************开始写代码******************************/
double StockGod(int n, int m, double p, const
vector<vector<double>>& prices)
{
vector<double> money;
vector<double> temp;
for (int i = 0; i <= n; i++) {//0--n-1代表股票,n代表现金
money.push_back(1);
temp.push_back(0);
}
for (int i = 1; i < m-1; i++) {//每轮
//对于现金特别对待
double cost = money[n];
for (int k = 0; k < n; k++) {//上一轮选择
if (money[k] / prices[i - 1][k] * prices[i][k] * (1 - p)
> cost)
cost = money[k] / prices[i - 1][k] * prices[i][k] * (1 -
p);
}
temp[n] = cost;
//对于股票
for (int j = 0; j < n; j++) {//对每一个选择(股票)
double cost = money[n];
for (int k = 0; k < n; k++) {//根据上一轮价格,更新当前这轮的价格,选择最大的
if (k != j) {
if (money[k] / prices[i - 1][k] * prices[i][k] * (1 - p)
> cost)
cost = money[k] / prices[i - 1][k] * prices[i][k] * (1 -
p);
}
else {
if (money[k] / prices[i - 1][k] * prices[i][k] >
cost)
cost = money[k] / prices[i - 1][k] * prices[i][k] ;
}
}
temp[j] = cost;
}
for (int tt = 0; tt <= n; tt++)
money[tt] = temp[tt];
}
double maxcost = money[n];
for (int i = 0; i < n; i++)
if (money[i] / prices[m - 2][i] * prices[m - 1][i] * (1 -
p) > maxcost)
maxcost = money[i] / prices[m - 2][i] * prices[m - 1][i]
* (1 - p);
return maxcost;
}
/******************************结束写代码******************************/
/*
相当于有现金分多条路线从第注入到股市,这多条路线必然有一条会得到最多的最终现金,所以,想要让最后的收益最大,那么所有现金流都必须汇集到最“挣钱”的路线中,所以,我们需要
求一条最佳路线从第一轮到最后一轮,得出每一轮需要选择的某一种股票或者现金即可即可。可以动态规划*/
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;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
12-04 15:23
三峡大学 FPGA工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
171608次浏览 2900人参与
# 找工作,行业重要还是岗位重要? #
85191次浏览 1687人参与
# 职场上哪些行为很加分? #
306651次浏览 3450人参与
# 大家每天通勤多久? #
69573次浏览 441人参与
# 实习的内耗时刻 #
210977次浏览 1538人参与
# 你面试体验感最差/最好的公司 #
16944次浏览 281人参与
# 一人说一个提前实习的好处 #
10140次浏览 201人参与
# 今年你最想重开的一场面试是? #
3807次浏览 67人参与
# 秋招落幕,你是He or Be #
10973次浏览 225人参与
# 互联网行业现在还值得去吗 #
46863次浏览 351人参与
# 实习没事做是福还是祸? #
16308次浏览 251人参与
# 面试吐槽bot #
164954次浏览 814人参与
# 重来一次,你会对开始求职的自己说 #
5806次浏览 143人参与
# 反问环节如何提问 #
126340次浏览 2663人参与
# 礼物开箱Plog #
633次浏览 24人参与
# 工作中听到最受打击的一句话 #
6271次浏览 109人参与
# 团建是“福利”还是是 “渡劫” #
6932次浏览 147人参与
# 我的第一份实习怎么找的 #
208492次浏览 1827人参与
# 比亚迪工作体验 #
74526次浏览 281人参与
# 大家实习每天都在干啥 #
106453次浏览 580人参与
查看10道真题和解析