程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVA 572 - Oil Deposits(DFS)

UVA 572 - Oil Deposits(DFS)

編輯:C++入門知識

        用DFS把相鄰的@字符標記掉,並統計塊的個數就好了。 [cpp]   #include <stdio.h>      int m, n;   char map[105][105];   int dir[8][2] = {-1, -1, -1, 0, -1, 1, 0, -1,   // 定義8個方向數組                       0, 1, 1, -1, 1, 0, 1, 1};      void dfs(int x, int y) {       map[x][y] = '*';       for (int i=0; i<8; i++) {           int xx = x + dir[i][0];           int yy = y + dir[i][1];           if (xx<1 || xx>m)   continue;           if (yy<1 || yy>n)   continue;           if ('*' == map[xx][yy]) continue;              dfs(xx, yy);       }   }      int main() {          while (scanf("%d%d", &m, &n)) {           if (0==m && 0==n)               break;  www.2cto.com         for (int i=1; i<=m; i++)               scanf("%s", map[i]+1);              int nCount = 0;           for (int i=1; i<=m; i++)               for (int j=1; j<=n; j++)                   if ('@' == map[i][j]) {                       dfs(i, j);                       nCount++;                   }              printf("%d\n", nCount);       }       return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved