度小满的一道笔试题
题目描述:卷积神经网络的最大池化算法,如一个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;
}
} 
