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

1 0
原创粉丝点击