天池 在线编程 捡胡萝卜(模拟)
生活随笔
收集整理的這篇文章主要介紹了
天池 在线编程 捡胡萝卜(模拟)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
來源:https://tianchi.aliyun.com/oj/210874425247820050/215397455965131519
給定一個n * m 的矩陣 carrot, carrot[i][j] 表示(i, j) 坐標上的胡蘿卜數量。
從矩陣的中心點出發,每一次移動都朝著四個方向中胡蘿卜數量最多的方向移動,保證移動方向唯一。 返回你可以得到的胡蘿卜數量。
2. 解題
class Solution { public:/*** @param carrot: an integer matrix* @return: Return the number of steps that can be moved.*/int PickCarrots(vector<vector<int>> &carrot) {// write your code hereint m = carrot.size(), n = carrot[0].size();int x = (m-1)/2, y = (n-1)/2;//中心點int sum = carrot[x][y];vector<vector<int>> dir = {{0,1},{1,0},{-1,0},{0,-1}};while(true){bool exists = false;int nx, ny, maxval = INT_MIN, px, py;for(int k = 0; k < 4; k++){nx = x + dir[k][0];ny = y + dir[k][1];if(nx>=0 && nx < m && ny>=0 && ny <n && carrot[nx][ny] != -1){exists = true;if(carrot[nx][ny] > maxval){px = nx, py = ny;maxval = carrot[nx][ny];}}}if(!exists)break;if(maxval != INT_MIN){sum += maxval;carrot[x][y] = -1;//原來位置標記為走過的x = px, y = py;//移動到新的位置}}return sum;} };50ms C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的天池 在线编程 捡胡萝卜(模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 02.改善深层神经网络:超参数调试、正则
- 下一篇: LeetCode 1534. 统计好三元