objectUniquePaths{ defmain(args: Array[String]): Unit = { println( uniquePaths(1, 1) )
println( uniquePaths(1, 2) )
println( uniquePaths(2, 1) )
println( uniquePaths(3, 2) )
println( uniquePaths(7, 3) ) }
/** * 动态规划,时间复杂度O(m*n),空间复杂度O(m*n) */ defuniquePaths(m: Int, n: Int): Int = { val dp = newArray[Array[Int]](m) for (i <- 0 until m) { dp(i) = newArray[Int](n) for (j <- 0 until n) { dp(i)(j) = 0 } }
dp(0)(0) = 1
for (i <- 1 until m) { dp(i)(0) = 1 }
for (i <- 1 until n) { dp(0)(i) = 1 }
for (i <- 1 until m) { for (j <- 1 until n) { dp(i)(j) = dp(i - 1)(j) + dp(i)(j - 1) } }