• poj1164 The Castle


     1 #include<stdio.h>
     2 int modules,p[50][50];
     3 bool visit[50][50];
     4 void search(int i,int j)
     5 {
     6     if(visit[i][j])//已经遍历过,不再遍历 
     7         return;
     8     visit[i][j]=1;//标志已访问 
     9     modules++;//块数加一 
    10     if(!(p[i][j]&8))//判断有没有南墙 
    11         search(i+1,j);
    12     if(!(p[i][j]&4))//判断有没有东墙 
    13         search(i,j+1);
    14     if(!(p[i][j]&2))//判断有没有北墙 
    15         search(i-1,j);
    16     if(!(p[i][j]&1))//判断有没有西墙 
    17         search(i,j-1);
    18 }
    19 int main()
    20 {
    21     int i,j,r,c,max,rooms;
    22     while(~scanf("%d%d",&r,&c)){
    23         for(i=0;i<r;++i)
    24             for(j=0;j<c;++j){
    25                 scanf("%d",&p[i][j]);
    26                 visit[i][j]=0;//初始化 
    27             }
    28         for(max=rooms=i=0;i<r;++i)
    29             for(j=0;j<c;++j){
    30                 modules=0;
    31                 search(i,j);
    32                 if(modules) rooms++;//假如找到一个新房间,rooms+1 
    33                 if(modules>max) max=modules;//更新max 
    34             }
    35         printf("%d\n%d\n",rooms,max);
    36     }
    37     return 0;
    38 }

    //深度优先搜索

  • 相关阅读:
    域渗透:ptk(pass the key)
    QQ拼音输入法6.0 DLL劫持实现提权
    进程关系
    进程控制
    进程环境
    系统数据文件和信息
    文件和目录
    标准I/O
    文件描述符标志/文件表项
    SSL安全原理
  • 原文地址:https://www.cnblogs.com/shihuajie/p/2639564.html
Copyright © 2020-2023  润新知