洛谷1451求細胞數量題解 DFS,BFS

2021-10-08 18:53:23 字數 1004 閱讀 9166

題目內容:

有乙個nxm矩陣,存放細胞,其中細胞數字為1~9,非細胞數字為0,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。(注意:除了n,m外,其他n行m個數輸入均為字元,需要轉換)

思路一:dfs深搜:

逐個去列舉(1,1)–(n,m),判斷哪些是細胞數字,哪些已經被訪問過,未被訪問過且是細胞數字的座標標記為true,count1++,同時再去尋找它的上下左右四個方向,標記與它相鄰的細胞,統一計數為相同細胞;

**:#include

using namespace std;

bool vis[101][101];

int n,m,count1=0;

int dx[4]=;

int dy[4]=;

char c;

void dfs(int x,int y)

}

int main()

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

printf("%d\n",count1);

return 0;

}

思路二:bfs廣搜:

也是從(1,1)出發,一層一層地去搜尋,直到(n,m)為止,常規bfs模板套路;

**:#include

using namespace std;

int n,m,count1=0,a[101][101];

bool vis[101][101];

int dx[4]=;

int dy[4]=;

char c;

struct node;

queue q;

//bfs廣搜

void bfs(int x,int y)

}q.pop(); //彈出隊首元素}}

int main()

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

printf("%d\n",count1);

return 0;

}

洛谷P1451 求細胞數量 題解

p1451 題解 深度優先搜尋 include 標頭檔案 int dx 4 偏移量 橫向,注 順序是下 右 上 左 int dy 4 偏移量 縱向,注 順序是下 右 上 左 char ma 101 101 ma陣列是用來儲存地圖的 因為輸入之間沒有空格,所以要開char void dfs int x...

洛谷 P1451 求細胞數量 (BFS) 題解

洛谷 p1451 一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。1 m,n 100 輸入乙個整數 m n m 行,n 列 的矩陣 輸出細胞的個數 輸入 4 10 0234500067 1034560500 2045...

洛谷P1451 求細胞數量

一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。1 m,n 100 輸入格式 輸入 整數m,n m行,n列 矩陣輸出格式 輸出 細胞的個數 輸入樣例 1 複製 4 10 0234500067 1034560500 2...