zoukankan      html  css  js  c++  java
  • noj-1102-黑白图像

     

      1 //题目地址:http://acm.njupt.edu.cn/acmhome/problemdetail.do?method=showdetail&id=1102

     2 //解题思路:遍历每个格子dfs访问当前格子的相领黑格
     3 #include <stdio.h>
     4 #include <string.h>
     5 
     6 #define MAXN 1000
     7 
     8 int mat[MAXN][MAXN], vis[MAXN][MAXN];
     9 
    10 void DFS(int x, int y){
    11         int i;
    12         if(mat[x][y]  == 0|| vis[x][y] == 1return ;    //曾经访问过这个格子,或者当前格子为空
    13         vis[x][y] = 1;  //标记(x, y)已访问过
    14         //递归访问周围的8个格子
    15          DFS(x, y + 1);
    16         DFS(x, y - 1);
    17         DFS(x + 1, y - 1);
    18         DFS(x + 1, y + 1);
    19         DFS(x - 1, y + 1);
    20         DFS(x - 1, y - 1);
    21         DFS(x + 1, y);
    22         DFS(x - 1, y);
    23 }
    24 
    25 int main(){
    26         int n, i, j, ans;;
    27         char s[MAXN];
    28         while(scanf("%d", &n) != EOF){
    29                 memset(mat, 0sizeof(mat));       //所有格子都初始化为白色,包括周围一圈的虚拟格子
    30                 memset(vis, 0sizeof(vis));            //所有各自都没有访问过
    31                 for(i = 0; i < n; i++){
    32                         scanf("%s", s);
    33                         for(j = 0; j < n; j++){
    34                                 mat[i + 1][j + 1] = s[j] - '0';//把图像往中间移动一格,空出一圈白格子
    35                         }
    36                 }
    37                 ans = 0;
    38                 for(i = 1; i <= n; i++){
    39                         for(j = 1; j <= n; j++){
    40                                 if(vis[i][j] == 0 && mat[i][j] == 1){
    41                                         DFS(i, j);  //找到所有未访问过的黑格
    42                                         ans++;
    43                                 }
    44                         }
    45                 }
    46                 printf("%d ", ans);
    47         }
    48         return 0;
    49 }
  • 相关阅读:
    Redux其实很简单(原理篇)
    基于Docker的UI自动化初探
    视觉设计师的进化
    浅谈容器监控和网易云计算基础服务实践
    微服务实践沙龙-上海站
    知物由学 | 见招拆招,Android应用破解及防护秘籍
    6本互联网技术畅销书免费送(数据分析、深度学习、编程语言)!
    Lily-一个埋点管理工具
    ArcGIS 10 许可配置
    How to Programmatically Add/Delete Custom Options in Magento?
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4070245.html
Copyright © 2011-2022 走看看