第一个判断的循环里应该是
arr[i][j + x] != '.'
------------
不是arr[i][j + k] != '.'
同时还要特判一下加x后是否超出边界
贴上本人AC代码供参考:
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
string str;
int r,c,k,a[101][101],cnt=0;
cin>>r>>c>>k;
for(int i=1;i<=r;i++){
cin>>str;
for(int j=1;j<=c;j++){
if(str[j-1]=='.')
a[i][j]=0;
else a[i][j]=1;
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(a[i][j]==1||j+k-1>r)continue;
int flag=1;
if(a[i][j]==0){
for(int l=j+1;l<j+k;l++){
if(a[i][l]==1){
flag=0;
break;
}
}
if(flag==1)cnt++;
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
int flag=1;
if(a[i][j]==1||i+k-1>c)continue;
if(a[i][j]==0){
for(int l=i+1;l<i+k;l++){
if(a[l][j]==1){
flag=0;
break;
}
}
if(flag==1)cnt++;
}
}
}
if(k==1)cout<<cnt/2;
else cout<<cnt;
return 0;
}
```
by zqx1108 @ 2023-01-24 09:32:32