let h = 4 let w = 4 let grid = [| [| 0; 0; 0; 0 |]; [| 0; 1; 0; 0 |]; [| 0; 0; 0; 1 |]; [| 1; 0; 0; 0 |] |] let paths_with_obs () = let dp = Array.init h (fun _ -> Array.make w 0) in if grid.(0).(0) = 0 then dp.(0).(0) <- 1; for j = 1 to w - 1 do if grid.(0).(j) = 0 then dp.(0).(j) <- dp.(0).(j - 1) done; for i = 1 to h - 1 do if grid.(i).(0) = 0 then dp.(i).(0) <- dp.(i - 1).(0) done; for i = 1 to h - 1 do for j = 1 to w - 1 do if grid.(i).(j) = 0 then dp.(i).(j) <- dp.(i - 1).(j) + dp.(i).(j - 1) done done; dp.(h - 1).(w - 1) ;; paths_with_obs ()