蔚来0713 笔试
15选择+3编程
有一说一,选择题是真的难,不知道是因为太久没笔试了还是生疏了,感觉全是蒙的,好像还涉及到了机器学习的东西😥。
1、最大子方阵和:给定一个n×m的矩阵,子方阵大小为l×l(l >= 2),方阵和为四个角上数字之和,问最大是多少?
我是直接暴力遍历l,其中以左上角的点为基准循环查找,注意要把答案改成long才过。
long ans = 0; for (int l = 2; l <= Math.min(m, n); l++) { for (int i = 0; i <= n - l; i++) { for (int j = 0; j <= m - l; j++) { ans = Math.max(ans, grid[i][j] + grid[i][j + l - 1] + grid[i + l - 1][j] + grid[i + l - 1][j + l - 1]); } } } System.out.println(ans);
2、对一个数a可以乘x或者乘y,问至少经过多少次可以变成y?
我是用递归的方法,如果尝试除x和y中较大值(前提是可以整除,如果都不能整除就直接输出-1)
3、旅游:给定去每个城市的花费和开心值,计算在花费差小于k的情况下,最大能获得的开心值。
先把输入的city排序(花费倒序,花费相同的情况下开心值倒序),设置左右两个指针,每次先尝试去右指针的城市,如果花费差>=k,就再减去。
还是数据类型的问题,累计和变量改成long就从50%到全A了。