zoukankan      html  css  js  c++  java
  • POJ 1979

    这是一道比较水的DPS的题目

    题意就是求你可以走到的黑色的地板砖的块数,@代表你的起点,也是黑色的地板砖,#代表白色的,则说明你不能走,这就是一个广搜的题目

    思路也很简单,如果你周围的那块地板是黑色的,而且之前没有走过,那就可以往那个地板砖走。

    还有这道题的那个初始化很重要,不然很可能会WA。

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 
     5 using namespace std;
     6 
     7 int ans;
     8 bool mark[21][21];
     9 char str_1[21][21];
    10 void dfs(int m,int n)
    11 {
    12     if(str_1[m+1][n]=='.'&&mark[m+1][n]){mark[m+1][n]=false;ans++;dfs(m+1,n);}
    13     if(str_1[m][n+1]=='.'&&mark[m][n+1]){mark[m][n+1]=false;ans++;dfs(m,n+1);}
    14     if(str_1[m-1][n]=='.'&&mark[m-1][n]){mark[m-1][n]=false;ans++;dfs(m-1,n);}
    15     if(str_1[m][n-1]=='.'&&mark[m][n-1]){mark[m][n-1]=false;ans++;dfs(m,n-1);}
    16 }
    17 
    18 int main()
    19 {
    20     int m,n;
    21     while(scanf("%d%d",&m,&n),m!=0&&n!=0)
    22     {
    23         for(int i=1;i<=n;i++)
    24             scanf("%s",str_1[i]);
    25         memset(mark,true,sizeof(mark));
    26         ans=1;
    27         for(int i=1;i<=n;i++)
    28             for(int j=0;j<m;j++)
    29                 if(str_1[i][j]=='@') dfs(i,j);
    30         printf("%d
    ",ans);
    31         memset(str_1,0,sizeof(str_1));
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    逐步实现python版wc命令
    Linux中短横线(-)小记
    memcached启动脚本(class练习)
    nginx启动脚本(class练习)
    Python-类的方法
    re模块
    shutil模块
    时间模块(time/date)
    迭代器
    生成器
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5392687.html
Copyright © 2011-2022 走看看