|
楼主 |
发表于 2017-11-2 21:13
|
显示全部楼层
- Sub problem15() '20*20的格子,左上走到右向有多少种可能(每次只能向下or向右) '结果:137846528820
- ' 思路:20*20的方格中,从左上角到右下角,不论怎么走,都只需要40步
- '其中必然有20步时横着走,20步时竖着走。
- '所以这个问题变成了从40步中取出20步一共有多少种方法?用排列组合C(20上)(40下)
- s = 阶乘(40) / 阶乘(20) / 阶乘(20)
- Debug.Print s
- End Sub
- ''''''''另一种思路:每一交点的方法=左一交点的方法+上一交点的方法,记为f(a,b)=f(a-1,b)+f(a,b-1),f(20,20)即为结果
- Sub problem15a()
- Dim f(20, 20): f(1, 1) = 1
- For a = 0 To UBound(f)
- For b = 0 To UBound(f)
- If a * b = 0 Then
- f(a, b) = 1
- Else
- f(a, b) = f(a - 1, b) + f(a, b - 1)
- End If
- Next
- Next
- Debug.Print f(20, 20)
- End Sub
复制代码 |
|