`

关于QQ等级需要小时数引发的算法联想

阅读更多

这是一个在游戏中比较通用的递增数据,如下:

//1  20
//2  50
//3  90
//4  140
//5  200
         
         
//6  270
//7  350
//8  440
//12 900
//16 1520
//32 5600
//48 12240

这些数据来自于QQ以前的升级规则  左边为等级,右边为所需小时数

不知道大家看出来什么规律了没有 ,对  每两个等级的差值 (30,40,50,60...)这样的递增;

这个就是规律,记得有个求和公式=(首项+尾项)*项数/2  ;类似于梯形公式

下面按照这个规律给出 求第N级的时候所需要的小时数,用JAVA代码实现

int disc_grow = 10;   
          int disc_base = 20;   
             
             
for(int t_level=1;t_level<=48;t_level++){   
   System.out.println(t_level+":"+(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2));   
          }  
int disc_grow = 10;
    int disc_base = 20;
    
    
for(int t_level=1;t_level<=48;t_level++){
   System.out.println(t_level+":"+(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2));
    } 

int t_level = N;(变量)

int disc_grow = 10;

int disc_base = 20;

(disc_base + ((disc_base+disc_grow)+(disc_base+disc_grow)+disc_grow*(t_level-2))*(t_level-1)/2);

 注:t_level 表示第几级

      disc_grow 表示差值每次递增量

      disc_base 表示一个初始基数

这个算法用的地方比较多,当然你可以用程序写一个方法模拟实现,但是用数学的方法我觉得更为巧妙。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics