蜗蜗看电影
注意提米里面的一句话:如果两组连续空位置中至少有一个位置不同,则视为不同的方案。
这句话看似没什么用,但是k=1的时有很大用处
因为k=1的时候,同一个点会在纵横各算一次,所以答案是正确答案的两倍。
那么再输出答案的时候要特判一下,如果k=1,cnt/2,否则正常输出
代码如下
#include<bits/stdc++.h>
using namespace std;
int n,m,b;
char s[105][105];
int main(){
cin.tie(0)->sync_with_stdio(0);
cin>>n>>m>>b;
for(int i=1;i<=n;i++) cin>>s[i]+1;
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m-b+1;j++){
bool f=1;
for(int k=j;k<=j+b-1;k++)
f&=(s[i][k]=='.');
if(f) cnt++;
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n-b+1;j++){
bool f=1;
for(int k=j;k<=j+b-1;k++) f&=(s[k][i]=='.');
if(f) cnt++;
}
}
b==1?cout<<cnt/2<<endl:cout<<cnt<<endl;
}

浙公网安备 33010602011771号