二分木形式のユーザー階層があります (1 人のユーザーが最大 2 人のユーザーを追加できるため)。以下はサンプル構造です
問題
- 毎週、支払いを行うために、ログインしているユーザーの比率で、
2:1
またはログインしているユーザーよりも多く追加されたユーザーの数を計算する必要があります。ratio (赤色で強調表示) は、追加された& 、および追加された を意味します。同様に、比率 (黄色で強調表示) では、持っているだけなので、比率を満たします。1:2
2:1
User A
User B1
User B2
User B1
User C1
1:2
User B2
User D1 & D2
User D1
User E1 & E2
1:2
- したがって、さらにユーザーが追加された場合、最初の週に上記の比率ですでに計算されているユーザーをスキップする必要があります。そして、これは、その週の支払いを計算する際に留意する必要があります.
言い換えれば問題
毎週、私または子階層のメンバーによって直接的または間接的に紹介されたユーザーに支払いを行わなければなりません。支払いの条件は2:1 or 1:2
、各メンバーが 2 つの直接メンバーを紹介できることです。
User テーブルには、メンバーの親を追跡するために、自己参照UserId
として ID と列があります。ParentId
必要に応じて、テーブル構造を変更する準備ができています。