作者JIWP (神楽めあ的錢包)
標題Re: [閒聊] 每日leetcode
時間2024-05-14 22:15:42
1219. Path with Maximum Gold
給m*n的matrix
每個cell代表黃金的數量
可以從任何一個位置開始走
同一個位置不能重複走
遇到0就要停止
請問最多可以拿幾個黃金
思路:
這題沒什麼好講的
不過我需要p幣,只好來混一點字數
就dfs遍歷,並用visit matrix紀錄走過的地方
並記錄最大值
golang code :
var n, m int
func getMaximumGold(grid [][]int) int {
n = len(grid)
m = len(grid[0])
visit := make([][]bool, n)
for i := 0; i < n; i++ {
visit[i] = make([]bool, m)
}
maxsum := 0
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if grid[i][j] != 0 {
dfs(i, j, &visit, grid, 0, &maxsum)
}
}
}
return maxsum
}
func dfs(i, j int, visit *[][]bool, grid [][]int, sum int, maxsum *int) {
if i > -1 && j > -1 && i < n && j < m && !(*visit)[i][j] && grid[i][j] != 0 {
(*visit)[i][j] = true
sum += grid[i][j]
if sum > (*maxsum) {
*maxsum = sum
}
dfs(i+1, j, visit, grid, sum, maxsum)
dfs(i-1, j, visit, grid, sum, maxsum)
dfs(i, j+1, visit, grid, sum, maxsum)
dfs(i, j-1, visit, grid, sum, maxsum)
sum -= grid[i][j]
(*visit)[i][j] = false
}
}
--
※ 發信站: 批踢踢實業坊(ptt-website.tw), 來自: 111.82.19.201 (臺灣)
※ 文章網址: https://ptt-website.tw/Marginalman/M.1715696144.A.679
推 aioiwer318: 別卷了 05/14 22:16
→ SecondRun: 大師 05/14 22:27