soraing 发表于 2022-6-20 17:30

一道算法题,Python或C/C++或Java实现



跪求算法的实现{:1_919:}

gzq830510 发表于 2022-6-20 17:30

本帖最后由 gzq830510 于 2022-6-21 11:07 编辑

这道题编程不知道怎么处理,但纯数学上分析的话,由于股票数量是总量限制,而每股购买金额是独立限制,因此采取按每股收益从高到低排列(C > D > B > A)尽可能买满(买到9万)的总体策略就可以达到收益最大
具体分析过程就是三楼那样啦,C买满是3000股,D买满1000股,剩下4000股全买B,收益2.6万。
不过这样投资基本上只考虑了每股收益和总额限制,没考虑每元收益……实际上不一定是最优的。
P.S.: 补充了一个程序,不过感觉程序没起什么大作用,基本上都是上面数学分析出来的……Stock_Dict = {'A':, 'B':, 'C':, 'D':}
Total_Shares = 8000
Investment_Limit = 90000
c = 0
Max_Profit = 0
#按每股收益排序
Pri_Dict = sorted(Stock_Dict.items(), key=lambda item: item, reverse=True)
for d in Pri_Dict:
    if c < Total_Shares:
#quantity是该股实际购买数量
      quantity = min(Total_Shares - c, Investment_Limit/d)
      Max_Profit += d * quantity
      c += quantity
    else:
      break
print(Max_Profit)

IBinary 发表于 2022-6-20 18:39

这个简单,把钱转我.一年之后按照你想要得预期年收益返还给你. 这样实现共赢. 你看咋样.{:1_926:}

landem 发表于 2022-6-20 19:59

感觉这个题有漏洞呢?限制条件不多;
我是这么考虑的,每元的收益差别很大,分别为(元收益/元投入):0.15;0.13;0.167;0.03;
第一支股票按照四支股票中收益最大=购买C,3000股
第二支股票按照剩余三支股票中单股收益最大=购买D,1000股
第三支股票按照剩余两只股票中固定数量收益最大=购买B,4000股
最终收益为26000元

soraing 发表于 2022-6-20 20:11

landem 发表于 2022-6-20 19:59
感觉这个题有漏洞呢?限制条件不多;
我是这么考虑的,每元的收益差别很大,分别为(元收益/元投入):0. ...

那i请问如果是算法应该怎么实现呢{:1_919:}

情到深处人孤独 发表于 2022-6-20 20:44

工商学院的?

云在天 发表于 2022-6-20 20:46

套公式就行吧?我记得我学精算的时候 有这种类似的题

TGYWL 发表于 2022-6-20 20:55

不知道有没有算错{:1_904:}

cshadow 发表于 2022-6-20 21:47

emmm   如果 我全买 A8000股,花费 80000元 (小于9万),获得收益 12000元
也就是80k得到12k
而如果按3楼计算的话240k得到26k
正要是放在现实生活中   全买A不是更划算   
{:1_918:} 果然出题人 没考虑全啊为了出题而出题

TmlGB 发表于 2022-6-20 22:26

soraing 发表于 2022-6-20 20:11
那i请问如果是算法应该怎么实现呢

我也想知道,感觉跟鸡兔同笼很想,条件却又不够,如果有了的话麻烦楼主d一声。感谢!
页: [1] 2
查看完整版本: 一道算法题,Python或C/C++或Java实现