#include <iostream>
using namespace std;
char a[105][105]; int ans = 0;
int main()
{
int r,c,k;
cin >> r >> c >> k;
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
cin >> a[i][j];
}
}
for(int i=1;i<=r;i++)
{
int cnt = 0;
for(int j=1;j<=c+1;j++)
{
if(a[i][j] == '.')
cnt++;
else
{
if(cnt-k+1 > 0)
ans += cnt - k + 1;
cnt = 0;
}
}
}
for(int i=1;i<=c;i++)
{
int cnt = 0;
for(int j=1;j<=r+1;j++)
{
if(a[j][i] == '.')
cnt++;
else
{
if(cnt-k+1>0) ans+=cnt-k+1;
cnt=0;
}
}
}
if(k==1)
cout<<ans/2<<endl;
else
cout<<ans<<endl;
}
using namespace std;
char a[105][105]; int ans = 0;
int main()
{
int r,c,k;
cin >> r >> c >> k;
for(int i=1;i<=r;i++)
{
for(int j=1;j<=c;j++)
{
cin >> a[i][j];
}
}
for(int i=1;i<=r;i++)
{
int cnt = 0;
for(int j=1;j<=c+1;j++)
{
if(a[i][j] == '.')
cnt++;
else
{
if(cnt-k+1 > 0)
ans += cnt - k + 1;
cnt = 0;
}
}
}
for(int i=1;i<=c;i++)
{
int cnt = 0;
for(int j=1;j<=r+1;j++)
{
if(a[j][i] == '.')
cnt++;
else
{
if(cnt-k+1>0) ans+=cnt-k+1;
cnt=0;
}
}
}
if(k==1)
cout<<ans/2<<endl;
else
cout<<ans<<endl;
}
本文介绍了一个处理二维数组的算法,该算法能够统计出在给定的行数、列数及连续空白字符数量的情况下,满足条件的子数组个数。通过两次遍历分别针对行和列进行计算,并根据不同情况调整输出结果。
367

被折叠的 条评论
为什么被折叠?



