UVa 572 Oil Deposits

很简单的。
   
     
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstdio>
  4. #include<cstring>
  5. using namespace std;
  6. char pic[105][105];
  7. void dfs(int x, int y) {
  8. if (pic[x][y] == '@') {
  9. pic[x][y] = '*';
  10. dfs(x, y + 1);
  11. dfs(x + 1, y);
  12. dfs(x + 1, y + 1);
  13. if (x > 0) {
  14. dfs(x - 1, y);
  15. dfs(x - 1, y + 1);
  16. if (y > 0) dfs(x - 1, y - 1);
  17. }
  18. if (y > 0) {
  19. dfs(x, y - 1);
  20. dfs(x + 1, y - 1);
  21. }
  22. }
  23. }
  24. int main() {
  25. int m, n;
  26. while (scanf("%d%d", &m, &n) == 2 && m && n) {
  27. memset(pic, 0, sizeof(pic));
  28. for (int i = 0; i != m; ++i) {
  29. for (int j = 0; j != n; ++j) {
  30. scanf(" %c", &pic[i][j]);
  31. }
  32. }
  33. int ans(0);
  34. for (int i = 0; i != m; ++i) {
  35. for (int j = 0; j != n; ++j) {
  36. if (pic[i][j] == '@') {
  37. dfs(i, j);
  38. ++ans;
  39. }
  40. }
  41. }
  42. printf("%d\n", ans);
  43. }
  44. return 0;
  45. }





你可能感兴趣的:(uva)