首页 > 其他 > 详细

URAL 1033 Labyrinth

时间:2015-08-06 16:59:26      阅读:232      评论:0      收藏:0      [点我收藏+]

问有多少个#的边在外面(需要放墙纸,,,最外面一层也需要)

在最外面补上一圈#,就可以直接bfs了

注意一组数据:

3

.##

###

##.


ans = 36;



#include<stdio.h>
#include<string.h>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
char a[36][36]={0};
int vis[36][36]={0};
int sum=0;

int dfs(int x,int y)
{
    if(vis[x][y]==1) return 0;
    vis[x][y]=1;
    if(a[x+1][y]==‘.‘) dfs(x+1,y);
    if(a[x-1][y]==‘.‘) dfs(x-1,y);
    if(a[x][y+1]==‘.‘) dfs(x,y+1);
    if(a[x][y-1]==‘.‘) dfs(x,y-1);
    if(a[x+1][y]==‘#‘) sum++;
    if(a[x-1][y]==‘#‘) sum++;
    if(a[x][y+1]==‘#‘) sum++;
    if(a[x][y-1]==‘#‘) sum++;
    return 0;
}

int main()
{
    int n;
    int i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%s",&a[i]);
        for(j=n;j>0;j--) a[i][j]=a[i][j-1];
    }
    for(i=0;i<=n;i++) {a[i][0]=‘#‘; a[0][i]=‘#‘; a[i][n+1]=‘#‘; a[n+1][i]=‘#‘;}
    dfs(1,1);
    dfs(n,n);
    printf("%d\n",9*(sum-4));

    return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

URAL 1033 Labyrinth

原文:http://blog.csdn.net/zhangwenchi/article/details/47317441

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!