iT邦幫忙

2026 iThome 鐵人賽

DAY 7
2
Software Development

快樂演算法系列 第 7

Visual Prompt preprocessing & 417 v6

  • 分享至 

  • xImage
  •  

Ocean 四邊 題目已知這些格子直接碰到海,所以從這裡反向開始
visited=true 已經進到這格,立刻記錄避免繞回來
inside一定先確認座標合法,否則後面直接讀 visited[nx][ny] 可能越界
!visited走過就不用再算高度,省事
height[nx][ny] >= height[x][y]最後才判斷能不能「往高處爬」
dfs(nx,ny) 三個條件都過,才正式走去下一格

讀 visited[nx][ny]就是:去看下一個座標 (nx, ny) 在 visited 裡是 true 還是 false。
例如 Grid 只有 3×3:
合法 index:0, 1, 2
如果你現在算出:nx = -1;ny = 2;
那visited[nx][ny]就等於想讀:visited[-1][2]
但 -1 根本不是合法位置,所以就是 out of bounds(超出陣列範圍/越界),可能直接 Runtime Error。
所以一定先:inside確認 (nx, ny) 還在 Grid 裡,才能安全去看:
visited[nx][ny]
height[nx][ny]

3.!visited[nx][ny] 為什麼還要出現?
因為 inside 只回答:這格存在嗎?
但不回答:這格以前走過沒?
例如:inside = true visited = true
代表:這格合法,但已經處理過了。 那就不用再算高度、也不用再 DFS 一次。
就是已算過

合法 → 沒拜訪過 → 下一格高度 ≥ 現在 → 往上走。

if (inside &&
!visited[nx][ny] &&
height[nx][ny] >= height[x][y])


上一篇
世界上最遠的距離就是你看得到YOLO看不到 & 417 v5
下一篇
label桌機GPU97%學太多sample下修、標記範圍小一點 & 785 v1
系列文
快樂演算法13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
AndyAWD
iT邦新手 1 級 ‧ 2026-08-26 23:19:27

專業!

0
RayYuanLiu
iT邦新手 5 級 ‧ 2026-08-27 11:10:53

👀 雖不明,但覺厲

我要留言

立即登入留言