一个在实际工作中遇到的算法问题,比较基础,求教。

2014-07-30 16:40:03 +08:00
 MarioLuisGarcia
有一个长度为n的列表,代表某物品的价格。

玩家第一次购买该物品时,花费的价格是列表第一项的价格。依此类推,到第n次,花费的是列表第n项的价格。

从第n+1次开始,每次购买花费的都是列表第n项的价格。

在一个购买行为里,玩家可以购买多项该物品,如,购买次数为3。如该玩家是首次购买该物品,所花费的钱是列表第1,2,3项的总和。 如玩家在进行该购买行为时,已经买过n次了,那么该购买行为花费的金钱是3*n。

现在我们仅知道玩家一个购买行为里的购买次数x (不知道他之前买了多少次), 以及该购买所花费的金钱y. 我们需要求出该玩家这个购买行为里所花费的金钱组成(第一个购买次数花了多少钱,第二个花了多少钱,第x个购买次数花了多少钱)。

我已经想出应该怎么做,先看 x * 列表第n项 是否等于 y, 如果不等于,再看 (x-1) * 列表第n项 + 1 * 列表第n-1项 是否等于 y, 一直到 1* 列表第x项 + 1 * 列表第x-1项 + ... + 列表第1项 是否等于 y 即可

但是,发现要把这个想法表达成程序语言表达式,对我而言有些困难(用的python)

特此求教。
3133 次点击
所在节点    问与答
28 条回复
wudikua
2014-07-30 19:08:54 +08:00
2b了。。。
yxjxx
2014-07-30 19:57:50 +08:00
@MarioLuisGarcia gist吧,v2目前不支持md呢
lu18887
2014-07-31 00:31:30 +08:00
@wudikua 别逗!
leafx
2014-07-31 02:18:28 +08:00
n= [4, 3, 2, 1]
x= 2
y= 13
so:
1. *2+ *3 = (4+3) + (2*3) = y(13)
2. *1+ *3 = 4 + (3*3) = y(13)
--------------------------------------------------------
希望你能理解我的用意,虽然概率小点,但是确实存在这样的情况
MarioLuisGarcia
2014-07-31 10:51:04 +08:00
@leafx x = 2, y 为什么会等于 13? x 是表示购买的次数啊,一次只会花1次钱。x=2 , y最大是8呀。。
loryyang
2014-07-31 11:21:24 +08:00
@MarioLuisGarcia 额,这个我也说不好,你多想想这种问题,慢慢的就会有解决思路了。思维是锻炼出来的。如果你觉得说不清楚,写伪代码即可,这个在程序员中间到不是最主要的问题
leafx
2014-07-31 12:08:32 +08:00
@MarioLuisGarcia 是啊, X表示的购买次数,第一次买2项物品,第二次买3项物品,好像符合你的逻辑额
MarioLuisGarcia
2014-07-31 12:18:23 +08:00
@leafx y表示的是x次购买所花费的钱。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX