本文共 583 字,大约阅读时间需要 1 分钟。
只是为了记录一下,不求多快,也不深究。
会简要描述思路,代码中不写注释。
如碰到不会做的用了别人代码会在博客中标出。
可以把向下走看成0,向右走看成1,一共要向下走m-1次,向右走n-1次。
也就是说要在m+n-2个位置中放置0和1,也就是说要求一共有多少种放法,答案自然就是 C m + n − 2 m − 1 C_{m+n-2}^{m-1} Cm+n−2m−1.
移一下即可。
class Solution { public int uniquePaths(int m, int n) { if (m < 2 || n < 2) { return 1; } int small = m < n ? m - 1 : n - 1, big = m > n ? m - 1 : n - 1; long temp1 = 1; for (int i = 0; i < small; i++) { temp1 *= small + big; big--; } long temp2 = 1; for (; small >= 1; small--) { temp2 *= small; } return (int) (temp1 / temp2); }}
转载地址:http://owee.baihongyu.com/