洛谷P1162 填塗顏色(BFS廣度優先搜尋)

2022-09-13 22:21:26 字數 1766 閱讀 9971

基礎是bfs,還不懂的同學移步 洛谷p1135 奇怪的天梯(bfs廣度優先搜尋基礎題) - 張牧歌 - (cnblogs.com),這裡不做多贅述。

這裡拿photoshop來舉例。

這裡是乙隻嘉然,如果我不要這個白色背景,只要本體可以怎麼摳圖呢?

對ps有了解的同學可以使用魔棒工具,即選取與點選地方顏色相近的部分。將白色點出來

右鍵,點選反選,就是將白色部分排除剩下的就是整隻嘉然啦。

效果十分好又快

那麼回到這題,我們只需選取不在框裡面的0標記,沒有被標記的就是被圈起來的部分!

int markx = ;

int marky = ;

int n;

void bfs(int x,int y)

; q.push(temp_pair);

while (!q.empty())

; q.push(t);

a[t.first][t.second] = 2;

}} }

}

輸出:

for(int i=1;i<=n;i++)

cout << endl;

}

聽起來似乎很可行!但是當資料變得刁鑽起來就寄了。

在這個資料裡我們用這個方法很難找到乙個起點去遍歷。

已知在邊緣的0是不會被1包圍進去的,所以找出邊緣的0去遍歷就好啦!

a[t.first][t.second] = 2;//把外圈的0標為2,即把圈外的0全部標記

}} }

}int main(int argc, char* ar**)

} for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)

cout << endl;

} return 0;

}這題居然只是普及-的難度,翻了一會兒題解靠自己腦子理解並寫出來了。這個思路確實很像我p圖的時候所以拿出來舉例了。有被折磨到。

BFS 洛谷P1162填塗顏色

題目 題解 解法一 bfs includeusing namespace std const int m 31 bool vis m m int n,m,a,b,c,map m m queue q void bfs int x,int y int main for int i 1 i n i i n...

洛谷 P1162 填塗顏色(bfs)

由數字0組成的方陣中,有一任意形狀閉合圈,閉合圈由數字1構成,圍圈時只走上下左右4個方向。現要求把閉合圈內的所有空間都填寫成2.例如 6 6的方陣 n 6 每組測試資料第一行乙個整數n 1 n 30 接下來n行,由0和1組成的n n的方陣。方陣內只有乙個閉合圈,圈內至少有乙個0。感謝黃小u飲品指出本...

洛谷P1162 填塗顏色 bfs

題目鏈結 題意 有乙個0和1組成的矩陣,一些1組成乙個閉合圈,圈住一些0,現在要把被圈住的這些0變成2輸出。思路 bfs,判斷每個0可以到達的邊界。如果這個0是可以到達矩陣的邊界的說明沒有被圈住。bfs時不把1加入佇列,如果最後也不能到達邊界說明是被圈住的,變成2就行了。1 include2 inc...