• POJ 1562 && ZOJ 1709 Oil Deposits(简单DFS)


    题目链接

    题意 : 问一个m×n的矩形中,有多少个pocket,如果两块油田相连(上下左右或者对角连着也算),就算一个pocket 。

    思路 : 写好8个方向搜就可以了,每次找的时候可以先把那个点直接变为*,这样可以避免重复搜索。

     1 //POJ 1562 ZOJ 1709
     2 
     3 #include <stdio.h>
     4 #include <string.h>
     5 #include <iostream>
     6 #include <stack>
     7 #include <algorithm>
     8 
     9 using namespace std ;
    10 
    11 char ch[110][110] ;
    12 int dir[8][2] = {{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}} ;
    13 int sum ;
    14 int m,n ;
    15 
    16 void DFS(int x,int y)
    17 {
    18     ch[x][y] = '*' ;
    19     for(int i = 0 ; i < 8 ; i++)
    20     {
    21         int xx = x + dir[i][0] ;
    22         int yy = y + dir[i][1] ;
    23         if(xx >= 0 && xx <= m && yy >= 0 && yy <= n && ch[xx][yy] == '@')
    24         {
    25             DFS(xx,yy) ;
    26         }
    27     }
    28 }
    29 int main()
    30 {
    31 
    32     while(~scanf("%d %d",&m,&n))
    33     {
    34         if(m == 0) break ;
    35         for(int i = 0 ; i < m ; i++)
    36             scanf("%s",ch[i]) ;
    37         sum = 0 ;
    38         for(int i = 0 ; i < m ; i++)
    39             for(int j = 0 ; j < n ; j++)
    40             {
    41                 if(ch[i][j] == '@')
    42                 {
    43                     DFS(i,j) ;
    44                     sum++ ;
    45                 }
    46             }
    47         printf("%d
    ",sum) ;
    48     }
    49     return 0 ;
    50 }
    View Code
  • 相关阅读:
    WEP编码格式
    OSK VFS read数据流分析
    科学剖析濒死体验 "复生"者讲述"死"前1秒钟
    Android的开发相对于tizen的开发难度
    minix文件系统分析
    贴给小程序(1) 查找第一个0值
    Linux下的QQ
    OSK USB 驱动
    LRU算法之hash+list实现(转)
    插入排序
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3671757.html
Copyright © 2020-2023  润新知