记一道面试题

题目:有n个台阶,每次可以走的步数任意,问有多少种走法?

面试时由于太紧张没答上,回来后仔细想了想,顺便记一下。

我的思路是n个台阶,相当于是有n个小球依次排开,有n-1个木棍,将0~n-1个木棍放到这些小球的间隔中,将这n个小球分成若干份,问有多少种分法的问题。这是一个组合数学问题,稍微分析一下就知道可以用如下算法:

1.设木棍个数k ∈ [0,n-1], k∈Z

2.计算k个木棍插在n-1个缝隙中有多少种插法: C(n-1,k)

3.求和:∑ C(n-1,k) (k ∈ [0,n-1], k∈Z)

=C(n-1,0) + C(n-1,1) + C(n-1,2) + ... + C(n-1,n-1)

等于杨辉三角第n行求和,其生成函数为(1+x) ^ n 取x=1,即最后结果=2^n。

你可能感兴趣的:(记一道面试题)