• 1033. Labyrinth(dfs)


    1033

    简单dfs 有一点小小的坑 就是图可能不连通 所以要从左上和右下都搜一下 加起来 从讨论里看到的

    讨论里看到一句好无奈的回复 “可不可以用中文呀。。。”

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 using namespace std;
     8 char s[40][40];
     9 int dis[4][2] = {0,1,1,0,-1,0,0,-1};
    10 int vis[40][40],n,num;
    11 int judge(int x,int y)
    12 {
    13     if(x<1||y<1||x>n||y>n)
    14     return 0;
    15     return 1;
    16 }
    17 void dfs(int x,int y)
    18 {
    19     int i;
    20     for(i = 0 ; i < 4 ; i++)
    21     {
    22         int tx = dis[i][0]+x;
    23         int ty = dis[i][1]+y;
    24         if(judge(tx,ty)&&!vis[tx][ty])
    25         {
    26             if(s[tx][ty]=='#')
    27             {
    28                 num++;
    29                 continue;
    30             }
    31             vis[tx][ty] = 1;
    32             if(tx==n&&ty==n)
    33             {
    34                 dfs(tx,ty);
    35                 continue;
    36             }
    37             if(tx==1||ty==1||tx==n||ty==n)
    38                 num++;
    39             if((tx==1&&ty==n)||(ty==1&&tx==n))
    40                 num++;
    41             dfs(tx,ty);
    42         }
    43     }
    44 }
    45 int main()
    46 {
    47     int i,j;
    48     scanf("%d",&n);
    49     for(i = 1; i <= n ; i++)
    50         for(j = 1 ; j <= n ; j++)
    51         cin>>s[i][j];
    52     vis[1][1] = 1;
    53     dfs(1,1);
    54     if(!vis[n][n])
    55     {
    56         vis[n][n] = 1;
    57         dfs(n,n);
    58     }
    59     printf("%d
    ",num*9);
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    Android学习(二)
    密码与安全新技术专题之AI与密码
    Android学习(一)
    冲刺周六The Sixth Day(6.1)
    冲刺周日The Seventh Day(6.2)
    冲刺周五The Fifth Day(5.31)
    冲刺周四The Fourth Day(5.30)
    冲刺周三The Third Day(5.29)
    冲刺周二The Second Day(5.28)
    冲刺周一The First Day(5.27)
  • 原文地址:https://www.cnblogs.com/shangyu/p/3352883.html
Copyright © 2020-2023  润新知