题解 | #杨辉三角-ii# Erlang组合规律

杨辉三角-ii

http://www.nowcoder.com/questionTerminal/a60ee4a1c8a04c3a93f1de3cf9c16f19

解题思路

这道题诠释了杨辉三角中组合之间的规律, 即Cmn = Cm-1n-1 + Cmn-1, 而杨辉三角本身与二项式展开式系数也有密切的联系~

解题关键是:

根据组合的公式 Cmn = n!/(m!(n-m)!) 那么Cm-1n = n!/((m-1)!(n-m+1)!)

推导出 Cmn = Cm-1n * (n - m + 1)/m, 即每一行的后一个元素等于前一个元素*(总个数 - 当前索引 + 1)/ 当前索引, 已知第一个元素为1, 则可推导出整行的值。

代码

-spec get_row(RowIndex :: integer()) -> [integer()].
get_row(RowIndex) ->
	do_get_row(1, #{pre => 1, nums => [1], row_index => RowIndex}).

do_get_row(N, Args = #{pre := PreNum, nums := Nums, row_index := RowIndex}) when N =< RowIndex ->
	Num = PreNum * (RowIndex - N + 1) div N,
	do_get_row(N + 1, Args#{pre := Num, nums := [Num | Nums]});
do_get_row(_, #{nums := Nums}) ->
	lists:reverse(Nums).
全部评论
是除以(当前索引+1)吧
点赞 回复 分享
发布于 2022-09-09 11:32 广东

相关推荐

xdm怎么说&nbsp;要被拷打了&nbsp;担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务