iT邦幫忙

2026 iThome 鐵人賽

DAY 5
1
Software Development

快樂演算法系列 第 5

流血日 星巴克沒開:“( &417 v4

  • 分享至 

  • xImage
  •  

1.void = 沒有回傳值。
這個 dfs() 只是去修改 visited,不需要 return 一個數字或陣列,所以用 void。
它有做事,但沒有回傳東西。

2.visited[x][y] = true; 要先存,是因為一進到這格就代表已經走到了,先標記才能避免後面又繞回這格造成重複 DFS。

條件 在檢查什麼 最小例子
inside 下一格有沒有超出 Grid nx = -1 → 出界,不能用
!visited[nx][ny] 下一格以前有沒有走過 走過 → 不要再走
height[nx][ny] >= height[x][y] 高度能不能反向往上爬 現在 2、下一格 3 → 可
所以順序就是:① 存在嗎?② 走過嗎?③ 高度夠嗎?④ 都符合 → DFS
不是「先檢查邊界一次,再檢查當下那格一次」。

void dfs(vector<vector>& height,
int x,
int y,
vector<vector>& visited)
參數 用途
height 題目原本的高度地圖,例如 1,2,3
visited 記錄這個 Ocean 已經走過哪些格子

vector<vector>& visited
DFS 改:visited[x][y] = true;
外面的 pacific / atlantic 才會真的被更新。

6.inside 自建的 bool 變數。
bool inside = nx >= 0 && nx < maxX && ny >= 0 && ny < maxY;
下一個座標是否仍在 Grid 裡


上一篇
Bye safari welcome swell &417 v3
下一篇
世界上最遠的距離就是你看得到YOLO看不到 & 417 v5
系列文
快樂演算法13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
RayYuanLiu
iT邦新手 5 級 ‧ 2026-08-24 23:04:42

流血日!?!?

0
AndyAWD
iT邦新手 1 級 ‧ 2026-08-24 23:05:45

豪雨假的關係?

我要留言

立即登入留言