华为2018年校园招聘机试题
01 括号匹配:
package huawei; import java.util.Scanner; import java.util.Stack; /** * 给定一个字符串,里边可能包含"()"、"[]"、"{}"三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。 * 输出: true:若括号成对出现且嵌套关系正确,或该字符串中无括号字符; false:若未正确使用括号字符。 实现时无需考虑非法输入。 输入描述: 输入:字符串 例子:(1+2)/(0.5+1) 输出描述: 输出:true | false 例子:true 示例1 输入 (1+2)/(0.5+1) 输出 True **/ public class CampusRecruitmentTest_2017_01 {public static void main(String[] args){Scanner sc = new Scanner(System.in); while (sc.hasNext()){Stack<Character> stack = new Stack<>(); String str = sc.nextLine(); char[] cs = str.toCharArray(); for (char c : cs) {if (c == '(' || c == '{' || c == '['){stack.push(c); } else {if (c == ')'){if (stack.peek() == '('){stack.pop(); }}if (c == '}'){if (stack.peek() == '{'){stack.pop(); }}if (c == ']'){if (stack.peek() == '['){stack.pop(); }}}}if (stack.isEmpty()) {System.out.println("true"); } else {System.out.println("false"); }}} }
02 打印队列:
package huawei; import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; /** * 打印机任务 简要描述: 某个打印机根据打印机队列执行打印任务,打印任务分为九个优先级,分别用数字1~9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A, 然后检查队列余下任务中有没有比A优先级更高的任务,则将任务A放在队列尾部,否则就执行任务A的打印。请编写一个程序,根据输入的打印队列,编出实 际的打印顺序。 输入描述: 函数原型: void printOrder(const int input[], int len, int output[]) 输入参数input表示打印队列,为一个由整数1~9(优先级)组成的数组,数组索引0表示打印队列头部。对于C/C++,参数len表示input数组的长度。 可以假定输入的参数总是合法有效的,input数组长度有可能为0,但不会是空指针。 输出为一个表示实际打印顺序的数组,其数组项为打印任务在输入数组中的索引值(从0开始)。 Java通过返回值输出。C/C++通过输出参数output[]输出,可以假定为存放结果分配了足够的空间 输入样例: 9, 3, 5 输出样例: 0, 2, 1 * **/ /** *分析: 首先记录所求时间它在队列中的位置,用一个队列存储这些任务的优先级,同时也创建一个队列存储对应任务一开始的位置,那么当我们对前一个队列进行 什么操作时,后一个队列也跟着做什么操作即可,就可以保证两个队列的对应关系——任务对应初始位置。进行模拟时,从第一个队列取出一个任务(同时第 二个队列也是进行同样的操作),判断该任务是否可以打印(通过循环判断,队列后面的元素任务优先级有木有大于当前任务的优先级即可),如果可以打 印就将所求打印时间加1,并且判断是否是我们所求时间的位置,如果是,则停止模拟,如果不是则继续以上操作;如果不可以进行打印就将刚才取出来的数 重新加到队尾(两个队列均是这样操作)。 */ public class CampusRecruitmentTest_2017_02 {public static void main(String[] args) {Scanner input = new Scanner(System.in); int t = input.nextInt(); for (int i = 0; i < t; i++) {int n = input.nextInt(); int pos = input.nextInt(); Queue<Integer> q = new LinkedList<Integer>(); Queue<Integer> qn = new LinkedList<Integer>(); for (int j = 0; j < n; j++) {int temp = input.nextInt(); q.add(temp); qn.add(j); }int time = 0; while (true) {int temp = q.poll(); int num = qn.poll(); if (goOnPrint(temp, q)) {time++; if (num == pos)break; } else {q.add(temp); qn.add(num); }}System.out.println(time); }}private static boolean goOnPrint(int t, Queue<Integer> q) {for (Integer v : q) {if (v > t)return false; }return true; } }
03 平安果
package huawei; import java.util.Scanner; /** 简要描述: 给定一个M行N列的矩阵(M*N个格子),每个格子中放着一定数量的平安果。 你从左上角的各自开始,只能向下或者向右走,目的地是右下角的格子。 每走过一个格子,就把格子上的平安果都收集起来。求你最多能收集到多少平安果。 注意:当经过一个格子时,需要一次性把格子里的平安果都拿走。 限制条件:1<N,M<=50;每个格子里的平安果数量是0到1000(包含0和1000). 输入描述: 输入包含两部分: 第一行M, N 接下来M行,包含N个平安果数量 输出描述: 一个整数 最多拿走的平安果的数量 示例: 输入 2 4 1 2 3 40 6 7 8 90 输出 136 **/ public class CampusRecruitmentTest_2017_03 {public static void main(String[] args){Scanner in = new Scanner(System.in); while (in.hasNext()){String s = in.nextLine(); String[] str = s.split(" "); int M = Integer.parseInt(str[0]); if (M<=1||M>50){break; }int N = Integer.parseInt(str[1]); if (N<=1||N>50){continue; }int num[][] = new int[M][N]; for (int i = 0; i < M; i++){String st = in.nextLine(); String[] strs = st.split(" "); for (int j = 0; j < strs.length; j++){num[i][j] = Integer.parseInt(strs[j]); if(num[i][j]<0||num[i][j]>1000){}}}System.out.println(getMaxValue(num)); }}/** 获得最多的平安果*/ private static int getMaxValue(int[][] num){int Row = num.length; int Col = num[0].length; int[][] dp = new int[Row][Col]; for (int i = 0; i < Row; i++){for (int j = 0; j <= i; j++){dp[i][0]+= num[j][0]; }}for (int i = 0; i < Col; i++){for (int j = 0; j <= i; j++){dp[0][i] += num[0][j]; }}for (int i = 1; i < Row; i++){for (int j = 1; j < Col; j++){dp[i][j] = Math.max(dp[i][j - 1] + num[i][j], dp[i - 1][j] + num[i][j]); }}return dp[Row - 1][Col - 1]; } }
华为2018年校园招聘机试题相关推荐
- 2014届华为校园招聘机试题
华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...
- 2015华为校园招聘机试题一
2015华为校园招聘机试题<一> 今天无意之间看到了2015年华为校园招聘的机试题,于是,做了下,写出来与大家共享.先看第一题: 题目如下: 按要求分解字符串,输入两个数M,N:M代表输入 ...
- 浦发银行计算机笔试题库,2018浦发银行校园招聘笔试试题库
原标题:2018浦发银行校园招聘笔试试题库 银行招聘网(http://www.jinrongren.net/)提醒:2018浦发银行校园招聘公告已经发布啦,共招聘2152人,公告中明确表明柜员岗专科以 ...
- 2014届华为成都校园招聘机试题
转载请注明:http://blog.csdn.net/ydm2011/article/details/11683325 本文试题权利华为公司所有,若侵犯权利,请通知,本人立即删除! 1. 输入正整数, ...
- 2013届华为校园招聘机试题
笔试题目(机试,共两题) 题目一:子串分离 题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔.请编写一个程序,自动分离出各个子串,并使用','将其分隔,并且 ...
- 2015华为校园招聘机试题<一>
题目如下: 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0. 例如:输入2,8,"abc","123456789&qu ...
- 华为机试题2014 java_2014届华为校园招聘机试题(java实现)
首先要感谢, 博主Hackbuteer1.提供的关于2014年的华为面试题目.这里运行环境是windows7,eclipse.jdk为1.8.0_45.好了直接上题目.代码,及分析. 一.题目描述(6 ...
- 2015届华为校园招聘机试题
第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ," ...
- 2012届华为校园招聘机试题
1.选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表 ...
最新文章
- Win7 SP1语言包微软官方下载地址及使用方法 2
- Data Mining and Machine Learning in Cybersecurity PDF
- 单片机利用蜂鸣器如何输出音乐
- JavaScript脚本放在哪里
- JSON的C语言编解码器——cJSON和json-c
- [邻接表] 学习邻接表的表示方法+BFS
- eclipse 工程中使用引入maven项目遇到maven-resources-plugin:2.6 找不到
- Java中的迭代与递归
- 用 Rust 开发 Linux,可行吗?
- 牛客网暑期ACM多校训练营(第三场): E. Sort String(KMP)
- 开课吧课堂之如何创建多级类层次
- node-amqp 使用fanout发布订阅rabbitmq消息
- 【题目记录】——2021 年百度之星·程序设计大赛 - 初赛二
- js上传文件到OSS
- 1 Spark机器学习 spark MLlib 入门
- Spring Boot 定制个性 banner
- 计算机数字信号和模拟信号,模拟信号和数字信号有什么区别
- 《iOS 开发进阶(唐巧)》读书笔记
- 在VM虚拟机上安装Red Hat Enterprise Linux
- root账号无法通过SSH登录阿里云ECS