func uniquePaths(m int, n int) int {
dp := make(\[\]\[\]int, m)
// 行赋初始值为1
for i := range dp {
dpi = make(\[\]int, n)
dpi0 = 1
}
// 列赋初始值为1
for j := 0; j < n; j++ {
dp0j = 1
}
for i := 1; i < m; i++ {
for j := 1; j < n; j++ {
dpij = dpi-1j + dpij-1
}
}
return dpm-1n-1
}
func uniquePathsWithObstacles(obstacleGrid \[\]\[\]int) int {
m := len(obstacleGrid)
n := len(obstacleGrid0)
//如果在起点或终点出现了障碍,直接返回0
if obstacleGridm-1n-1 == 1 || obstacleGrid00 == 1 {
return 0
}
dp := make(\[\]\[\]int, m)
for i := range dp {
dpi = make(\[\]int, n)
}
// 行赋初始值为1,有障碍物停止
for i := 0; i < m && obstacleGridi0 == 0; i++ {
dpi0 = 1
}
// 列赋初始值为1,有障碍物停止
for j := 0; j < n && obstacleGrid0j == 0; j++ {
dp0j = 1
}
for i := 1; i < m; i++ {
for j := 1; j < n; j++ {
//有障碍物跳过
if obstacleGridij != 1 {
dpij = dpi-1j + dpij-1
}
}
}
return dpm-1n-1
}