題目內容:
有乙個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...