zoukankan      html  css  js  c++  java
  • EOJ-2518 Guarding the Farm

    http://acm.cs.ecnu.edu.cn/problem.php?problemid=2518

    题意:给出一张图,求出其hilltop的个数。

    hilltop的定义:一片相同高度的区域,而周围的区域的高度都小于它,或处于图的边缘。

    周围的区域:与某片区域高度不相同的区域,且范围是向八个方向延伸。

    DFS搜索某个点,并记录,搜索周围八个方向,若有一个点大于它则这块区域不是HILLTOP。标记周围所有与它高度相同的点防止重复搜索。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 int mat[105][75];
     6 bool v[105][75];
     7 int n,m;
     8 bool hilltop;                                   //判断是否为hilltop
     9 void dfs(int x,int y,int temp){
    10     if(x<0 || x>=n || y<0 || y>=m) return ;     //在图边缘也满足要求
    11     if(mat[x][y]<temp) return ;
    12     if(mat[x][y]>temp){hilltop=0;return ;}      //大于时则不满足
    13     if(v[x][y]) return ;
    14     v[x][y]=1;                                  //将所有相同高度的区域都标记
    15     dfs(x+1,y,temp);                            //向八个方向延伸
    16     dfs(x-1,y,temp);
    17     dfs(x,y+1,temp);
    18     dfs(x,y-1,temp);
    19     dfs(x+1,y+1,temp);
    20     dfs(x+1,y-1,temp);
    21     dfs(x-1,y+1,temp);
    22     dfs(x-1,y-1,temp);
    23 }
    24 int main(){
    25     while(~scanf("%d%d",&n,&m)){
    26         for(int i=0;i<n;i++)
    27             for(int j=0;j<m;j++)
    28                 scanf("%d",&mat[i][j]);
    29         memset(v,0,sizeof(v));
    30         int cnt=0;
    31         for(int i=0;i<n;i++)
    32             for(int j=0;j<m;j++)
    33                 if(v[i][j]==0){                 //未标记的点才进行搜索
    34                     hilltop=1;
    35                     dfs(i,j,mat[i][j]);
    36                     if(hilltop)cnt++;
    37                 }
    38         printf("%d
    ",cnt);
    39     }
    40     return 0;
    41 }
    View Code
  • 相关阅读:
    SSM:Spring整合SpringMVC框架
    SSM:搭建整合环境
    SpringMVC:常用注解
    SpringMVC的入门案例
    base64
    windows设置exe开机自启动
    Python-wmi模块
    Base64String转为图片并保存
    java给图片添加水印图片
    uni-app中封装axios请求
  • 原文地址:https://www.cnblogs.com/KimKyeYu/p/3179324.html
Copyright © 2011-2022 走看看