华为校招机测(8-25)
时间:2021-08-31
本文章向大家介绍华为校招机测(8-25),主要包括华为校招机测(8-25)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
第一题: 最大值子矩阵
题目给出一个矩阵,里面的值有正有负,
求一个子矩阵,使得这个子矩阵框住的值最大,并返回最大值。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int rows = sc.nextInt();//行数 int cols = sc.nextInt();//列数 int res = Integer.MIN_VALUE; int[][]matrix = new int[rows][cols]; for(int i=0; i<=rows-1; ++i){ for(int j=0; j<=cols-1; ++j){ matrix[i][j] = sc.nextInt(); } } for(int begin = 0; begin<=rows-1; ++begin){//开始 int[] ring = new int [cols]; int[] dp = new int[cols]; for(int end = begin; end<= rows-1; ++end){//结束 for(int j=0; j<cols; ++j) ring[j] += matrix[end][j];//列元素和 res = Math.max(res,ring[0]); dp[0] = ring[0]; for(int j=1; j<cols; ++j){ if(dp[j-1]<0)dp[j] = ring[j]; else dp[j] = dp[j-1] + ring[j]; res = Math.max(res,dp[j]);//取最大 } } } System.out.println(res); } } //3 4 //-3 5 -1 5 //2 4 -2 4 //-1 3 -1 3
第二题: 逃跑路径长度
给出一个矩阵,里面是秒数,
从左上出发,到右下结束,每走一格,所有秒数都减一
求逃跑路径的长度(路径长度==逃跑总时间,一秒一格)
import java.io.BufferedInputStream; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Node{ int x; int y; int hop; public Node(int x, int y, int hop) { this.x = x; this.y = y; this.hop = hop; } } public class Main { static int row,col; static int[] dx={-1,1,0,0}; static int[] dy={0,0,1,-1}; private static int getAns(int[][] grid){ if (grid[0][0]<=0){ return -1; } int[][] minTime=new int[row][col]; for (int i = 0; i < row; i++) { Arrays.fill(minTime[i],Integer.MAX_VALUE); } Queue<Node> queue=new LinkedList<>(); queue.add(new Node(0,0,0)); while (!queue.isEmpty()){ Node node=queue.poll(); int x=node.x; int y=node.y; int hop=node.hop; // System.out.println(x+" "+y+" "+hop); if (minTime[x][y]<=hop||grid[x][y]<hop)continue; minTime[x][y]=hop; if (x==row-1&&y==col-1)return hop; for (int i = 0; i < dx.length; i++) { int nextX=dx[i]+x; int nextY=dy[i]+y; if (!inGrid(nextX,nextY))continue; queue.add(new Node(nextX,nextY,hop+1)); } } return -1; } private static boolean inGrid(int x,int y){ return x>=0&&x<row&&y>=0&&y<col; } //Main主函数 public static void main(String[] args) { Scanner s=new Scanner(new BufferedInputStream(System.in)); row=s.nextInt(); col=s.nextInt(); int[][] grid=new int[row][col]; for (int i = 0; i <row ; i++) { for (int j = 0; j < col; j++) { grid[i][j]=s.nextInt(); } } System.out.println(getAns(grid)); } }
//如果想快速取分,直接return row+col-2, 可以得到90%的分
第三题: 任务规划(AOV)
题目给出多个任务,包括每个任务需要的时间,
以及所有任务依赖的其他任务,依赖的其他任务完成后才能执行本任务,
求完成所有任务所需的时间,如果任务循环依赖等待则返回-1
import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); ArrayList<HashSet<Integer>> task = new ArrayList<HashSet<Integer>>();//存task任务依赖 ArrayList<Integer> time = new ArrayList<>();//存时间 for(int i=0; i<=num-1; ++i){ String str1 = sc.next(); String str2 = sc.next(); String[] strs = str1.split(","); HashSet<Integer> task1 = new HashSet<>(); task.add(task1); for(String s:strs){ task.get(i).add(Integer.valueOf(s)); } //任务 time.add(Integer.valueOf(str2)); } HashSet<Integer> finish = new HashSet<>();//完成的任务 finish.add(-1); HashSet<Integer> run = new HashSet<>(); int res = 0; for(;res<=1000;res++){ //检查finish for(Integer f:finish){ for(int i=0;i<=num-1;++i){ task.get(i).remove(f); } } for(int i=0;i<=num-1;++i){ if(task.get(i).size()==0)run.add(i); } for(Integer r:run){ int newValue = time.get(r)-1; time.set(r,newValue); if(time.get(r)==0)finish.add(r); } if(finish.size()==num+1){ res++; break; } } if(res == 1001)res =-1; System.out.println(res); } } //6 //3,5 2 //5 3 //4 5 //1 2 //0 3 //-1 1 ////16 //3 //-1 1 //2 2 //1 3 ////-1 //3 //-1 1 //-1 2 //-1 3 ////3
原文地址:https://www.cnblogs.com/qyf2199/p/15209589.html
- 多类好米齐交易:域名776.cn近10万元结拍
- Python爬虫(八)_Requests的使用
- Python爬虫(十一)_案例:使用正则表达式的爬虫
- Python爬虫(十二)_XPath与lxml类库
- 区块链域名热度不减 健康类英文米近六位交易
- Python爬虫(九)_非结构化数据与结构化数据
- Python爬虫(十)_正则表达式
- python爬虫(四)_urllib2库的基本使用
- 投资人榴莲又卖出一枚三拼域名
- python爬虫(五)_urllib2:Get请求和Post请求
- python爬虫(七)_urllib2:urlerror和httperror
- 双拼市场好!米友售出域名chuijia.com
- Elasticsearch--数据索引
- python爬虫(一)_爬虫原理和数据抓取
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- scipy.stats连续分布的基本操作
- InvocationHandler中invoke方法中的第一个参数proxy的用途
- height、offsetheight、clientheight、scrollheight、innerheight、outerheight
- mysql sql-mode 解析和设置
- JAVABEAN EJB POJO区别
- @Component和@Bean以及@Autowired、@Resource
- mybatis generator and 和or条件
- 『.Net反射』ILGenerator.Emit 动态MSIL 编程
- Spring通过XML配置文件以及通过注解形式来AOP 来实现前置,后置,环绕,异常通知
- 切面编程(环绕通知与前后置通知区别)
- Spring在代码中获取bean的几种方式
- Spring 一个接口多个实现类怎么注入
- ASP.NET MVC Controller的激活
- js 逗号表达式
- spring动态调用方法