【題解】求細胞數量-C++


題目
描述
一矩形陣列由數字0到9組成,數字1到9代表細胞,細胞的定義為沿細胞數字上下左右若還是細胞數字則為同一細胞,求給定矩形陣列的細胞個數。(1<=m,n<=100)?

輸入輸出格式
輸入格式:
輸入:整數m,n(m行,n列)

矩陣

輸出格式:
輸出:細胞的個數

輸入輸出樣例
輸入樣例#1:
4 10
0234500067
1034560500
2045600671
0000000089
輸出樣例#1:
4

思路
這道題目實質上就是一個找連通塊的問題,輸入完成之后把整個矩陣遍歷一遍,遇到不是0的就ans++,然后把它周圍八個方塊與它相同的全部改成0,直到沒有再和它相同的為止。用搜索來做,廣搜深搜都可以。

代碼

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m;
 4 int ans;
 5 char a[105][105];
 6 void dfs(int x,int y)
 7 {
 8     if(x>n||x<1||y>m||y<1||a[x][y]=='0')return;
 9     a[x][y]='0';
10     dfs(x+1,y);
11     dfs(x,y+1);
12     dfs(x-1,y);
13     dfs(x,y-1);
14 }
15 int main()
16 {
17     cin>>n>>m;
18     for(int i=1;i<=n;i++)
19     {
20         for(int j=1;j<=m;j++) cin>>a[i][j];
21     }
22     for(int i=1;i<=n;i++)
23     {
24         for(int j=1;j<=m;j++)
25         {
26             if(a[i][j]!='0')ans++,dfs(i,j);
27         }
28     }
29     cout<<ans<<endl;
30     return 0;
31 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM