第一题写一下就会发现问题是n行m列的矩阵,然后每次找a行b列大小的子矩阵中最大值 所以直接两边循环就能出结果,只不过得控制一下,不然会超时 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int a = in.nextInt(); int b = in.nextInt(); int res = 0; for(int i = 1; i <= n - a + 1; i++) { for(int j = 1; j <= m - b + 1; j++) { res += getMax(i, a, j ,b); } } System.out.println(res); } public static int getMax(int starti, int a, int startj, int b) { int max = starti * startj % 10; for(int i = starti; i < starti + a; i++) { for(int j = startj; j < startj + b; j++) { if(i * j % 10 == 9) { return i * j % 10; } if(i * j % 10 > max) { max = i * j % 10; } } } return max; } } 第二题我知道是回溯法做,但是太菜了写不出来。。
点赞 9

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务