您的位置:首页 > 其它

蓝桥选拔第一场(E)

2017-11-27 22:36 351 查看
Select Code
#include<iostream>
#include<string>
#include<iomanip>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int n, m; string a[1002];
while (cin >> n >> m)
{
int s = 0;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
int t = 0;
if (a[i][j] == '*')
{
if (j == 0) continue;
if (j + 4 > m - 1) continue;
if (i + 5 > n - 1) continue;
if (a[i][j + 1] == '*'&&a[i][j + 2] == '*'&&a[i][j + 3] == '*'&&a[i][j - 1] != '*'&&a[i][j + 4] != '*')
{
for (int k = i + 1; k <= i + 4; k++)
for (int h = j - 1; h <= j + 4; h++)
{
if (a[k][h] != '*')
{
t = 1; break;
}
}
if (t == 0)
{
if (a[i + 5][j] != '*' || a[i + 5][j + 1] != '*' || a[i + 5][j + 2] != '*' || a[i + 5][j + 3] != '*' || a[i + 5][j - 1] == '*' || a[i + 5][j + 4] == '*')
t = 1;
}
if (t == 0)
{
if (i > 0)
{
if (a[i - 1][j] == '*' || a[i - 1][j + 1] == '*' || a[i - 1][j + 2] == '*' || a[i - 1][j + 3] == '*')
t = 1;
}
if (i + 5 < n - 1)
{
if (a[i + 6][j] == '*' || a[i + 6][j + 1] == '*' || a[i + 6][j + 2] == '*' || a[i + 6][j + 3] == '*')
t = 1;
}
if (j >= 2)
{
if (a[i + 1][j - 2] == '*' || a[i + 2][j - 2] == '*' || a[i + 3][j - 2] == '*' || a[i + 4][j - 2] == '*')
t = 1;
}
if (j + 4 < m - 1)
{
if (a[i + 1][j + 5] == '*' || a[i + 2][j + 5] == '*' || a[i + 3][j + 5] == '*' || a[i + 4][j + 5] == '*')
t = 1;
}
if(t==0)s++;
}
}
}
}
cout << s << endl;
}
return 0;
}
此题细节较多,选好入手点思路会清晰许多。我们可以先判断这个烧饼本身,然后判断烧饼的外围有没有缀余。
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: