DFS 填充顏色

2021-09-10 08:21:24 字數 1451 閱讀 5200

題目描述

由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如:6 \times 66×6的方陣(n=6n=6),塗色前和塗色後的方陣如下:

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 0 0 1

1 1 0 0 0 1

1 0 0 0 0 1

1 1 1 1 1 1

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 2 2 1

1 1 2 2 2 1

1 2 2 2 2 1

1 1 1 1 1 1

輸入輸出格式

輸入格式:

每組測試資料第一行乙個整數n(1 \le n \le 30)n(1≤n≤30)

接下來nn行,由00和11組成的n \times nn×n的方陣。

方陣內只有乙個閉合圈,圈內至少有乙個00。

//感謝黃小u飲品指出本題資料和資料格式不一樣. 已修改(輸入格式)

輸出格式:

已經填好數字22的完整方陣。

輸入輸出樣例

輸入樣例#1: 複製

60 0 0 0 0 0

0 0 1 1 1 1

0 1 1 0 0 1

1 1 0 0 0 1

1 0 0 0 0 1

1 1 1 1 1 1

輸出樣例#1: 複製

0 0 0 0 0 0

0 0 1 1 1 1

0 1 1 2 2 1

1 1 2 2 2 1

1 2 2 2 2 1

1 1 1 1 1 1

說明1 \le n \le 301≤n≤30

想法 :(好久前寫的)

把邊界的點 都進行 dfs 那麼沒有被標記的 或者 不為 1 的即為內部的點

#include

int book[31]

[31]=

,a[33][

33],n;void

dfs(

int x,

int y),,

,};if

(x<

1||x>n||y<

1||y>n||a[x]

[y]==1)

return

;for

(i=0

;i<

4;i++

)return;}

intmain()

}for

(i=1

;i<=n;i++

)for

(i=1

;i<=n;i++

)for

(i=1

;i<=n;i++

)printf

("\n");

}return0;

}

dfs 填充顏色

由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如 6 times 66 6的方陣 n 6n 6 塗色前和塗色後的方陣如下 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2...

面試題 08 10 顏色填充(dfs)

編寫函式,實現許多編輯軟體都支援的 顏色填充 功能。待填充的影象用二維陣列 image 表示,元素為初始顏色值。初始座標點的橫座標為 sr 縱座標為 sc。需要填充的新顏色為 newcolor 周圍區域 是指顏色相同且在上 下 左 右四個方向上存在相連情況的若干元素。請用新顏色填充初始座標點的周圍區...

Turtle庫顏色填充

使用turtle不只可以畫線條,也可以將畫出的封閉線條進行填充。設定填充色 fillecolor r,g,b 開始填充 begin fill 結束填充 end fill 把上次畫圖的練習 先初始化乙個填充顏色。然後,在畫每個圖形繪製之前使用begin fill 以及繪製之後使用end fill 這樣...