zoukankan      html  css  js  c++  java
  • 深度优先遍历

    /*深搜的灵魂所在就是递归*/
    //以此题为例http://acm.hdu.edu.cn/showproblem.php?pid=1312

    #include<stdio.h>
    #include<string.h>

    char map[25][25];
    int n,m;
    int mark[25][25];

    void dfs(int x,int y)
    {
     if(x>=0&&y>=0&&x<n&&y<m)
     {
      if(map[x][y]=='.'&&mark[x][y]==0)
      {
       mark[x][y]=1;
       dfs(x+1,y);
       dfs(x-1,y);
       dfs(x,y+1);
       dfs(x,y-1);
      }
     }
    }

    int main()
    {
     while(scanf("%d %d",&m,&n)&&(n!=0&&m!=0))
     {
      memset(mark,0,sizeof(mark));
      int i,j;
      int x,y;
      for(i=0;i<n;i++)
      {
       scanf("%s",&map[i]);
      }
      int flag=0;
      for(i=0;i<n;i++)
      {
       for(j=0;j<m;j++)
       {
        if(map[i][j]=='@')
        {
         x=i;
         y=j;
         flag=1;
         break;
        }
       }
       if(flag)
       break;
       }
       map[i][j]='.';
       dfs(x,y);
       int ans=0;
       for(i=0;i<n;i++)
       {
        for(j=0;j<m;j++)
        {
         ans+=mark[i][j];
        }
       }
       printf("%d ",ans);
     }
     return 0;
    }

  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/6480277.html
Copyright © 2011-2022 走看看