题目大意:统计一个字符矩阵的X字符的周长
题解:简单搜索,当搜索到不是X字符或者到了矩阵外边的时候,判断搜索到这里方向,如果不是通过斜对角来到这个点的就把答案加1,就Ok了
#include<iostream>
#include<cstring>
#include<cstdio>
#define maxn 40
using namespace std;
int n,m,x,y;
int ans;
char g[maxn][maxn];
bool vis[maxn][maxn];
bool init()
{
cin>>n>>m>>x>>y;
if(n+m+x+y==0)return false;
for(int i=1;i<=n;i++)
{
cin>>g[i]+1;
}
ans=0;
memset(vis,0,sizeof(vis));
return true;
}
void dfs(int x,int y)
{
vis[x][y]=1;
for(int i=-1;i<2;i++)
{
for(int j=-1;j<2;j++)
{
int nx=x+i;
int ny=y+j;
if(g[nx][ny]=='.')
{
if(i==0||j==0)
ans++;
continue;
}
if(nx<1||nx>n||ny<1||ny>m)
{
if(i==0||j==0)
ans++;
continue;
}
if(vis[nx][ny])continue;
dfs(nx,ny);
}
}
}
void slove()
{
dfs(x,y);
cout<<ans<<endl;
}
int main()
{
while(init())
slove();
return 0;
}