简单的二维前缀和
#include <bits/stdc++.h> #define ll long long const int N=1005; using namespace std; int n,m,k,cnt[N][N]; string s; int main() { ios::sync_with_stdio(false); cin>>n>>m>>k; for(int i=1;i<=n;++i) { cin>>s; for(int j=1;j<=m;++j) { cnt[i][j]=s[j-1]-'0'+cnt[i-1][j]+cnt[i][j-1]-cnt[i-1][j-1]; } } int ans=0; for(int i=1;i<=n-k+1;++i) { for(int j=1;j<=m-k+1;++j) { int x=i+k-1,y=j+k-1; if(cnt[x][y]-cnt[i-1][y]-cnt[x][j-1]+cnt[i-1][j-1]) ans++; } } cout<<ans<<endl; return 0; }