#include<bits/stdc++.h>
#define LL long long
using namespace std;
char ch[55][2505];
int f[55][55], val[55][55], DP[55][2505];
//val[i][j]:第i个木板涂j次色的最大正确格子数
//DP[i][j]:前i个木板涂j次色的最大正确格子数
int main(){
int n, m, T;
scanf("%d%d%d", &n, &m, &T);
for(int i=1; i<=n; i++){
scanf("%s", ch[i]+1);
}
for(int i=1; i<=n; i++){
int cut[55]={0};
memset(f, 0, sizeof(f));
for(int j=1; j<=m; j++){
cut[j]=cut[j-1]+ch[i][j]-'0';
}
for(int j=1; j<=m; j++){
for(int k=1; k<=50; k++){
for(int w=0; w<j; w++){
f[j][k]=max(f[j][k], f[w][k-1]+max(j-w-cut[j]+cut[w], cut[j]-cut[w]));
}
val[i][k]=max(f[j][k], val[i][k]);
}
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=T; j++){
for(int k=0; k<=j; k++){
DP[i][j]=max(DP[i][j], DP[i-1][j-k]+val[i][k]);
}
}
}
printf("%d\n", DP[n][T]);
return 0;
}

京公网安备 11010502036488号