起初这似乎是个简单的问题,但现在我不太确定了。
我有一个球员名单,按排名排序。
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
我必须将这个列表显示为一个金字塔,其中每一层都会增加一个玩家的数量所以,排名第一的选手在金字塔的顶端,第二和第三的选手在第二层等等。。。
1
2 , 3
4 , 5 , 6
7 , 8 , 9 , 10
我想知道是否有可能从排名位置(RP)得到金字塔层编号(LN)。例如:
1 RP = 1 LN
3 RP = 2 LN
5 RP = 3 LN
8 RP = 4 LN
试图创建一个公式来得到这个值,但现在很明显我的数学需要加强。所以我来了。
x rp=y ln?
最佳答案
让我在一级。
然后前面的(l-1)级别有l(l-1)/2个数字。换言之,既然在x层有x个数,我们知道
x(x-1)/2或同等
x^2-x-2i和
x^2+x-2i≥0
上述两个方程的判别式为d=1+8i。
很明显,水平l必须低于第一个二次方的正根,即
L至少是第二个二次方的正根,也就是
L≥(-1+√(1+8i))/2
所以,我们要做的就是把最后一个的天花板取下来。
用c语言来说,这个值作为一个整数,是
(整数)CEIL((-1.0+sqrt(1.0+8.0*i))/2.0)
好问题!
关于algorithm - 金字塔层位置(从有序列表位置开始),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15041846/