RT,开 O2 就只剩 28 分了,不开 O2 可以 AC。
#include<bits/stdc++.h>
using namespace std;
int n, a[251][251], sum[251][251];
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
scanf("%1d", &a[i][j]);
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + a[i][j];
}
}
for(int i = 2; i <= n; i++){
int ans = 0;
for(int j = i; j <= n; j++){
for(int k = 2; k <= n; k++){
if(i * i == sum[j][k] - sum[j-i][k] - sum[j][k-i] + sum[j-i][k-i]){
ans++;
}
}
}
if(ans) cout << i << " " << ans << endl;
}
return 0;
}