種子填充演算法(Uva 572

2021-08-17 04:42:38 字數 585 閱讀 5110

題目描述:給定乙個m*n的矩陣,由『@』和『*』組成。求『@』一共有幾塊是連通的。

思路:使用dfs遍歷,即找到乙個『@』後,將與之在同一塊的『@』均標記,之後碰到就可以忽略。然後遍歷一遍矩陣即可。

**如下:

#include#include#include#define clean(i) memset(i,0,sizeof(i))

using namespace std; 

const int maxn=105;

char a[maxn][maxn];

int m,n,b[maxn][maxn];

void dfs(int x,int y,int ans)

int main()

{    int i,j;

while(scanf("%d%d",&m,&n)&&m&&n)

{   

int count=0;

clean(i);

for(i=0;i看劉汝佳的書說這個演算法叫做種子填充演算法,順便學習一下。

這個演算法就是尋找一遍所要尋找的畫素點,若找到就更換那個畫素點的狀態,之後找看他周圍八個點的狀態,遞迴呼叫原函式就可以。

Uva572種子填充

油田 oil deposits,uva 572 輸入乙個m行n列的字元矩陣,統計字元 組成多少個八連塊。如果兩個字元 所在 的格仔相鄰 橫 豎或者對角線方向 就說它們屬於同乙個八連塊。例如,圖中有兩 個八連塊。輸入 5 5 注意題目的問題,看清題目先。thinking 通過乙個個字元判斷,判斷其是否...

例題 油田(UVa 572)

輸入乙個m行n列的字元矩陣,統計字元 組成多少個八連塊。如果兩個字元 所在的格仔相鄰 橫豎或者對角線方向 就說他們屬於同乙個八連塊。sample input 1 1 3 5 sample output01 分析 dfs基礎題,典型題。用dfs找聯通塊 從每個 格仔出發,遞迴遍歷它周圍的 格仔。每次訪...

uva572 油田 連通塊遍歷

的簡潔性需要注意小技巧 1.方向陣列。2.外麵包一層空氣防止判斷邊界。3.更改原來的陣列的狀態而不需要重新建立vis陣列 這樣會破壞原始資料,是乙個不好的習慣,但是這樣很靈活。include include define directsize 8 struct direct direct direc...