首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序贯奖励点的算法

序贯奖励点的算法
EN

Stack Overflow用户
提问于 2018-09-29 18:42:55
回答 1查看 309关注 0票数 0

我想写一个算法来找到连续的奖励点。邀请者每次确认邀请都会得到( 1/2 )^k分,其中k是邀请的级别:0级(直接邀请的人)会得到1分,1级(由原始客户邀请的人邀请的人)会得到1/2分,2级邀请(由1级的人邀请的人)会得到1/4分,依此类推。只有第一个邀请才算数:向同一个人发送多个邀请不会产生任何进一步的积分,即使它们来自不同的邀请者并且只有第一个邀请算数。例如:

输入:

代码语言:javascript
复制
A recommends B
B accepts
B recommends C
C accepts
C recommends D
B recommends D
D accepts

计算如下:A从B的推荐中获得1分,B从C的推荐中获得0.5分,C的推荐中获得另外的0.25分。A的总分为1.75分。

B从C的推荐中获得1分,从C的D推荐中获得0.5分。B从D的推荐中得不到任何分数,因为D之前是由C邀请的。B总分1.5分。

C从D的推荐中得到1分。C总分为1分。

输出:{ “A”: 1.75, “B”: 1.5, “C”: 1 }

这个问题的算法应该是什么?我认为这里必须使用动态编程。

EN

回答 1

Stack Overflow用户

发布于 2018-09-29 19:26:11

这只是一个祖先在树中的搜索。通过跟踪深度,您可以知道要奖励多少分。

伪码

代码语言:javascript
复制
def add_points(accepter):
    depth = 0
    while accepter has an inviter:
        accepter.inviter.points += (0.5)^depth
        accepter = accepter.inviter
        depth += 1

这个算法是O(父代的数量),因为你需要遍历所有的父代来更新,你知道你不能在复杂度方面做得更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52567549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档