科大讯飞笔试题9-17
科大讯飞这次笔试题还是出的比较用心,最后一题解方程没写出来
第一题:
加了一层padding去做
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(), N = sc.nextInt(), K = sc.nextInt(), L = sc.nextInt(); int[][] arr = new int[M+K/2*2][N+L/2*2]; int[][] kernal = new int[K][L]; int nM = M-K+K/2*2+1; int nN = N-L+L/2*2+1; int[][] res = new int[nM][nN]; for (int i = K/2; i < K/2+M; i++) { for (int j = L/2; j < L/2+N; j++) { arr[i][j] = sc.nextInt(); } } for (int i = 0; i < K; i++) { for (int j = 0; j < L; j++) { kernal[i][j] = sc.nextInt(); } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { res[i][j] = getRes(arr, kernal, i, j, K, L); if (res[i][j] > 255) res[i][j] = 255; if (res[i][j] < 0) res[i][j] = 0; System.out.print(res[i][j] + " "); } System.out.println(); } } private static int getRes(int[][] arr, int[][] kernal, int i, int j, int k, int l) { int sum = 0; for (int p = 0; p < k; p++) { for (int q = 0; q < l; q++) { sum += arr[i+p][j+q] * kernal[p][q]; } } return sum; }第二题:
转化成最大岛屿
第三题:
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(), N = sc.nextInt(); int[][] old = new int[M][N]; int[][] New = new int[M][N]; int[][] map = new int[M][N]; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { old[i][j] = sc.nextInt(); } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { New[i][j] = sc.nextInt(); } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { map[i][j] = New[i][j] - old[i][j] == 0 ? 1 : 0; } } int res = 0; int[][] orders = new int[][]{{0,1}, {1,0}, {0,-1}, {-1,0}}; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (map[i][j] != 0) { int t = dfs(i, j, map); res = Math.max(res, t); } } } System.out.println(res); } static int cnt = 0; private static int dfs(int i, int j, int[][] map) { if (i >= map.length || j >= map[0].length || i < 0 || j < 0) return 0; if (map[i][j] != 0) { map[i][j] = 0; return 1 + dfs(1+1, j, map) + dfs(i-1, j, map) + dfs(i, j+1, map) + dfs(i, j-1, map); } return 0; }
第三题:
解方程没写出来,有大佬写出来的求一个Java版本写法
#科大讯飞笔试#