标签:
问有多少个#的边在外面(需要放墙纸,,,最外面一层也需要)
在最外面补上一圈#,就可以直接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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zhangwenchi/article/details/47317441