请帮我看一下代码哪里有问题
题目描述
A喜欢画雪花。如下定义一个大小为x的雪花:
雪花的中间是一个'+'
在'+'的上方和下方各有x个'|'
在'+'的左方和右方各有x个'-'
在'+'的左上方和右下方各有x个''
在'+'的右上方和左下方各有x个'/'
雪花可以重叠,例如
.|./..
.|/...
--+--..
./|...
/.|.|/
....-+-
..../|
上图有重叠的两个大小分别为2和1的雪花。
给定一个n行m列的字符矩阵,找出其中最大的雪花大小。
输入描述
第一行两个整数n,m
接下来n行每行一个长为m的字符串,表示一个n行m列的字符矩阵
输出描述
一行一个整数表示最大的雪花大小
样例1
输入
5 6
.|/.
---+--
/./|.
./.|.
/..|..
输出
1
样例2
输入
7 7
.|./..
.|/...
--+--..
./|...
/.|.|/
....-+-
..../|
输出
2
提示
数据范围
1<=n,m<=50
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, m;
vector<string> a;
int maxS()
{
int maxs = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (a[i][j] == '+')
{
int s1 = 0;
for (int k = 0; k < min(i, n-1-i); k++)
{
if (a[i-k][j] == '|' && a[i+k][j] == '|')
{
s1++;
}
else
{
break;
}
}
if (s1 != 0)
{
maxs = max(maxs, s1);
}
else
{
maxs = max(maxs, 1);
}
}
}
}
return maxs;
}
int main()
{
cin >> n >> m;
a.resize(n+1);
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cout << maxS();
return 0;
}