首页 > 程序开发 > 软件开发 > Java >

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

2011-05-25

这是一个在游戏中比较通用的递增数据,如下: //1  20 //2  50 //3  90 //4  140 //5  200                    //

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

//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 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 表示一个初始基数

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

相关文章
最新文章
热点推荐