//土 秘法地震 //算法:前缀和 //本质:最大子矩阵,再本质:最大连续子串 #include <bits/stdc++.h> using namespace std; typedef long long ll; int a[1005][1005];//矩阵 int main() { int i,j,k,n,m,cnt=0;//cnt计数符合情况的数量 string str; cin>>n>>m>>k; for(i=1;i<=n;i++) { cin>>str; for(j=0;j<m;j++)//将输入数据转化为行列为11开头的矩阵 { a[i][j+1]=a[i][j]+str[j]-'0';//转化过程中,直接计算行前缀和 } } for(j=1;j<=m;j++) for(i=2;i<=n;i++) a[i][j]+=a[i-1][j];//计算列前缀和 for(i=0;i<=n-k;i++)//检查符合的情况 for(j=0;j<=m-k;j++) if(a[i+k][j+k]+a[i][j]-a[i+k][j]-a[i][j+k]>0) cnt++;//符合情况 cout<<cnt<<endl; }