leetcode 1219 黃金礦工

2021-10-04 21:15:44 字數 1073 閱讀 8185

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m * n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的**數量;如果該單元格是空的,那麼就是 0。

為了使收益最大化,礦工需要按以下規則來開採**:

每當礦工進入乙個單元,就會收集該單元格中的所有**。

礦工每次可以從當前位置向上下左右四個方向走。

每個單元格只能被開採(進入)一次。

不得開採(進入)**數目為 0 的單元格。

礦工可以從網格中 任意乙個 有**的單元格出發或者是停止。

示例 1:

輸入:grid = [[0,6,0],[5,8,7],[0,9,0]]

輸出:24

解釋:[[0,6,0],

[5,8,7],

[0,9,0]]

一種收集最多**的路線是:9 -> 8 -> 7。

示例 2:

輸入:grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]]

輸出:28

解釋:[[1,0,7],

[2,0,6],

[3,4,5],

[0,3,0],

[9,0,20]]

一種收集最多**的路線是:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7。

1 <= grid.length, grid[i].length <= 15

0 <= grid[i][j] <= 100

最多 25 個單元格中有**。

解題思路: 從當前grid[x][y]!=0 的點開始遞迴,遞迴到邊界之外 後 判斷 路徑和 是否大於 ans ,如果大於 ans 的話,更新 

ans

class solution ,,,};

int ans = 0;

int m,n;

bool judge(int x,int y)

vis[x][y] = false;

}int getmaximumgold(vector>& grid)

} return ans;

}};

Leetcode 1219 黃金礦工

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的 數量 如果該單元格是空的,那麼就是 0。為了使收益最大化,礦工需要按以下規則來開採 每當礦工進入乙個單元,就會收集該單元格中的所有 礦工每次可以從當...

LeetCode 1219 黃金礦工

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的 數量 如果該單元格是空的,那麼就是 0。為了使收益最大化,礦工需要按以下規則來開採 每當礦工進入乙個單元,就會收集該單元格中的所有 礦工每次可以從當...

leetcode1219 黃金礦工(回溯)

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的 數量 如果該單元格是空的,那麼就是 0。為了使收益最大化,礦工需要按以下規則來開採 每當礦工進入乙個單元,就會收集該單元格中的所有 礦工每次可以從當...