度小满的一道笔试题
题目描述:卷积神经网络的最大池化算法,如一个5*5矩阵a,用3*3的核进行最大池化,最后会输出一个3*3的矩阵b,b矩阵的每一个元素都是矩阵a的窗口矩阵的最大值
输出只要求将b矩阵的总和输出;
矩阵a的每一个元素为a[i,j] = i*j mod 10 ,i,j>=1 (注意java数组是从0开始)
demo
输入:4 5 3 3
输出:54
public class Main { public static void main(String[] args) { while (true){ Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); //获取矩阵和核的大小 String[] s1 = s.split(" "); int n = Integer.parseInt(s1[0]); int m = Integer.parseInt(s1[1]); int a = Integer.parseInt(s1[2]); int b = Integer.parseInt(s1[3]); //生成输入矩阵 int[][] arrInput = new int[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m ; j++) { arrInput[i][j] = (i+1)*(j+1)%10; } } //计算输出矩阵的元素和 int sum = 0; for (int i = 0; i < n-a+1; i++) { for (int j = 0; j < m-b+1; j++) { sum += max(arrInput,a,b,i,j); } } System.out.println(sum); } } public static int max(int[][] arr,int a,int b,int i,int j){ int temp = 0; for (int k = i; k < a + i ; k++) { for (int l = j; l < b + j; l++) { if (arr[k][l] >= temp){ temp = arr[k][l]; } } } return temp; } }