#include<iostream>
using namespace std;
char arr[105][105];
int r, c, k,sum;
void fuzhi()
{
cin >> r >> c >> k;
for (int i = 1; i <= r; i++)
for (int d = 1; d <= c; d++)
cin >> arr[i][d];
}
int main()
{
freopen("title.in", "r", stdin);
fuzhi();
for (int g = 1; g <= 2; g++)
{
int s = g == 1 ? r : c;//利用三目运算符调换行和列的顺序,想缩行可以放进for里
int y = g == 1 ? c : r;
for (int i = 1; i <=s; i++)
{
int temp = 0;
for (int d = 1; d <=y; d++)
{
int x = g == 1 ? i : d;
int z = g == 1 ? d : i;
if (arr[x][z] == '.')
temp++;
else if (arr[x][z] == '#')
temp = 0;
if (temp >= k)//因为是连续的,所以,如果下一个也是点则仍然可以放下
{
sum++;
}
}
}
}
if (k == 1)//如果等于1则会重复计算,因为一个点不分行列
cout << sum / 2;
else
cout << sum;
return 0;
}
洛谷P3654 First Step (ファーストステップ)
最新推荐文章于 2023-10-11 10:04:56 发布