全部评论
感觉好难啊,你A出来了吗?
第一题是dp做的,dp[i][j]表示以(i,j)为左上角顶点的滑动窗口内的最大值,AC 第二题DFS,没来得及写
只会C++的我默默交卷
我也傻眼了,蹲一个思路
第一题AC,遍历矩阵,由于值只有0--9,所以子矩阵稍微大点就不需要遍历子矩阵,而直接+9即可。 第二题72,dfs暴力+剪枝优化,然后想不到优雅解法,提前二十多分钟交卷了
第一题写一下就会发现问题是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; } } 第二题我知道是回溯法做,但是太菜了写不出来。。
55 18,第二题没看懂
回溯
发现一个大佬贴了代码(JAVA) https://www.nowcoder.com/discuss/412724
相关推荐