題目描述:給定乙個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...