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); } }#京东信息集散地##笔试真题#