基礎是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...