码迷,mamicode.com
首页 > 其他好文 > 详细

URAL 1033 Labyrinth

时间:2015-08-06 17:02:36      阅读:138      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!