• hdu 2952 Counting Sheep 解题报告


    其实和1241是一个题 就是 把上下左右的四个方向连在一起的#是为片# 问图中有几篇#

    ps:打得时候搜索方向的向量的坐标打错了 找了半天 哎 注意一下吧

    方法和1421一样 并且方向少了 变为4个 (1241的方向是直接粘贴的 看来有的东西只是看懂看不行 一定要亲自打一下 实践一下才行)

    在图中找到一个#使用一次dfs标记所有相连的# 总数+1;(见1241)

     1 #include<iostream>
    2 #include<cstdio>
    3 #include<string>
    4 #include<queue>
    5 using namespace std;
    6 int f[4][2]={0,1,1,0,0,-1,-1,0};
    7 bool visit[100][100]={0};
    8 char map[100][100];
    9 int n,m;
    10 void dfs(int x,int y)
    11 {
    12 int i,j,k,dx,dy;
    13 visit[x][y]==1;
    14 for(i=0;i<4;i++)
    15 {
    16 dx=x+f[i][0];
    17 dy=y+f[i][1];
    18 if(dx>=0 && dx<n && dy>=0 && dy<m && map[dx][dy]=='#' && visit[dx][dy]==0)
    19 {
    20 visit[dx][dy]=1;
    21 dfs(dx,dy);
    22 }
    23
    24 }
    25 return;
    26 }
    27 int main()
    28 {
    29
    30 int ncase,i,j,k,ans;
    31 scanf("%d",&ncase);
    32 for(i=0;i<ncase;i++)
    33 {
    34
    35 memset(map,0,sizeof(map));
    36 memset(visit,0,sizeof(visit));
    37
    38 scanf("%d %d",&n,&m);
    39 getchar();
    40 ans=0;
    41 for(j=0;j<n;j++)
    42 {
    43 for(k=0;k<m;k++)
    44 scanf("%c",&map[j][k]);
    45 getchar();
    46 }
    47 for(j=0;j<n;j++)
    48 {
    49 for(k=0;k<m;k++)
    50 {
    51 if(map[j][k]=='#'&& visit[j][k]==0)
    52 {
    53
    54 dfs(j,k);
    55 visit[j][k]=1;
    56 ans++;
    57 }
    58
    59 }
    60 }
    61 printf("%d\n",ans);
    62 }
    63 //system("pause");
    64 return 0;
    65 }
  • 相关阅读:
    PHP下实现两种ajax跨域的解决方案之jsonp
    实际应用中git(合并本地与服务器项目)
    centos7 编译安装nginx
    windows vagrant共享目录设置问题
    shell 需要注意的点
    插入排序(直接插入排序)
    选择排序
    快速排序
    冒泡排序
    centos7.5安装redis-5.0.4
  • 原文地址:https://www.cnblogs.com/yujiaao/p/2151736.html
Copyright © 2020-2023  润新知