青蛙跳台阶,上台阶问题,总览。解析版

这类问题考的其实是对数据的分析以及处理。

我在写时,发现他们的数据有规律。

最易看出的是n阶台阶,一次上1到n阶的方法。

n台阶12345
方法124816

也就是2的n-1次方。

int fn(int k)

{

    if (k < 2)

        return 1;

    else

        return 2*fn(k-1)%100003;//因为最后测试数字过大,我选择取余来缩小数字,可以去掉%100003


}

在之后为了解决n阶台阶,一次1到k阶,我发现当k相同,每次总台阶不同时的规律。

n,k1,12,23,34,35,36,3
方法12471324

因此,我发现第n项的方法等于前k项所和。

    for (a = k+1; a < n+1; a ++)
    {
        for(b = a-1; b > a-k-1; b --)
        {
            f[a] = (f[b] + f[a]) % 100003;
        }
    }

总之,你绝对想不到,作为编程,需要运用到你的数学才能,加油。