zoukankan      html  css  js  c++  java
  • HDU 1312

    题意:‘.’代表黑色瓷砖,‘#’代表红色瓷砖,‘@’代表一个人的起始位置,问这个人最多能踩到多少黑色瓷砖,注意注意!!!先输入列在输入行。

    思路:也是典型的dfs,但是这里每访问一个黑色瓷砖的话,就标记为‘#’,代表不能再访问他了,因为在此访问的话,总数就不对了。(为此本弱调试了半小时才发现)

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 const int qq=20+5;
     5 int n,m,tot;
     6 char map[qq][qq];
     7 int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
     8 void dfs(int x,int y)
     9 {
    10     ++tot;
    11     for(int i=0;i<4;++i){
    12         int tx,ty;
    13         tx=x+dir[i][0];ty=y+dir[i][1];
    14         if(tx<0||ty<0||tx>=n||ty>=m||map[tx][ty]=='#')
    15             continue;
    16         map[tx][ty]='#';
    17         dfs(tx,ty);
    18     }
    19     return;
    20 }
    21 int main()
    22 {
    23     while(scanf("%d%d",&m,&n)&&(n||m))
    24     {    
    25         int sx,sy;
    26         getchar();
    27         for(int j,i=0;i<n;++i){
    28             for(j=0;j<m;++j){
    29                 map[i][j]=getchar();
    30                 if(map[i][j]=='@'){
    31                     sx=i;sy=j;map[i][j]='#';
    32                 }
    33             }
    34             getchar();
    35         }
    36         tot=0;
    37         dfs(sx,sy);
    38         printf("%d
    ",tot);
    39     }
    40 }
  • 相关阅读:
    关于sqrt函数的使用
    电子商务
    随笔
    哈哈
    整体管理
    软件产品质量特性
    问题
    风险
    antd
    Flex布局大作用
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5143743.html
Copyright © 2011-2022 走看看