8月12日:京东笔试第三题
注意斜的正方形,不只是菱形,画图找另外三个顶点的坐标规律。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt(), m = cin.nextInt();
boolean[][] mat = new boolean[n][m];
for (int i = 0; i < n; i++) {
String s = cin.next();
for (int j = 0; j < s.length(); j++) {
mat[i][j] = s.charAt(j) == 'X';
}
}
int res = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (!mat[i][j]) {
continue;
}
for (int k = 1; k < m; k++) {
// mat[i][j] 是正的正方形的左上角
if (j + k < m && i + k < n &&
mat[i][j + k] && mat[i + k][j] && mat[i + k][j + k]) {
res++;
}
// mat[i][j] 是斜的正方形的顶点
for (int t = 1; t < m; t++) {
if (i + k < n && j - t >= 0 && i + t < n && j + k < m && i + k + t < n && j + k - t < n &&
mat[i + k][j - t] && mat[i + t][j + k] && mat[i + k + t][j + k - t]
) {
res++;
}
}
}
}
}
System.out.println(res);
}
}
#京东信息集散地##笔试真题#
查看28道真题和解析