暴力法(70):
import java.util.*;
public class Main {
public static void main(String[] args){
final int n,L,r,t;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
L = sc.nextInt();
r = sc.nextInt();
t = sc.nextInt();
int[][] g = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
g[i][j] = sc.nextInt();
}
}
int cn=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int sum = 0;
for (int k = -r; k <=r; k++) {
for (int l = -r; l <= r; l++) {
if(i+k>=0 && i+k<n && j+l<n && j+l>=0)
sum += g[i+k][j+l]-t;
}
}
if(sum<=0){
cn++;
}
}
}
System.out.println(cn);
}
}
满分代码
import java.util.*;
public class Main {
public static void main(String[] args){
final int n,L,r,t;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
L = sc.nextInt();
r = sc.nextInt();
t = sc.nextInt();
int[][] sumArr = new int[n+1][n+1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
sumArr[i+1][j+1] = sumArr[i+1][j] + sumArr[i][j+1] - sumArr[i][j] + sc.nextInt();
}
}
int cn=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int x1 = i - r +1 >=1? i-r+1:1;
int y1 = j - r +1>=1? j-r+1:1;
int x2 = i + r +1 <= n? i+r+1:n;
int y2 = j + r + 1 <= n? j+r+1:n;
int p = sumArr[x2][y2] - sumArr[x1-1][y2] - sumArr[x2][y1-1] +sumArr[x1-1][y1-1];
if(p <= (x2-x1+1)*(y2-y1+1)*t)
cn++;
}
}
System.out.println(cn);
}
}