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年校园招聘机试题相关推荐

  1. 2014届华为校园招聘机试题

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  2. 2015华为校园招聘机试题一

    2015华为校园招聘机试题<一> 今天无意之间看到了2015年华为校园招聘的机试题,于是,做了下,写出来与大家共享.先看第一题: 题目如下: 按要求分解字符串,输入两个数M,N:M代表输入 ...

  3. 浦发银行计算机笔试题库,2018浦发银行校园招聘笔试试题库

    原标题:2018浦发银行校园招聘笔试试题库 银行招聘网(http://www.jinrongren.net/)提醒:2018浦发银行校园招聘公告已经发布啦,共招聘2152人,公告中明确表明柜员岗专科以 ...

  4. 2014届华为成都校园招聘机试题

    转载请注明:http://blog.csdn.net/ydm2011/article/details/11683325 本文试题权利华为公司所有,若侵犯权利,请通知,本人立即删除! 1. 输入正整数, ...

  5. 2013届华为校园招聘机试题

    笔试题目(机试,共两题)  题目一:子串分离  题目描述:    通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔.请编写一个程序,自动分离出各个子串,并使用','将其分隔,并且 ...

  6. 2015华为校园招聘机试题<一>

    题目如下: 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0. 例如:输入2,8,"abc","123456789&qu ...

  7. 华为机试题2014 java_2014届华为校园招聘机试题(java实现)

    首先要感谢, 博主Hackbuteer1.提供的关于2014年的华为面试题目.这里运行环境是windows7,eclipse.jdk为1.8.0_45.好了直接上题目.代码,及分析. 一.题目描述(6 ...

  8. 2015届华为校园招聘机试题

    第一题(60分):        按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ," ...

  9. 2012届华为校园招聘机试题

    1.选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表 ...

最新文章

  1. Win7 SP1语言包微软官方下载地址及使用方法 2
  2. Data Mining and Machine Learning in Cybersecurity PDF
  3. 单片机利用蜂鸣器如何输出音乐
  4. JavaScript脚本放在哪里
  5. JSON的C语言编解码器——cJSON和json-c
  6. [邻接表] 学习邻接表的表示方法+BFS
  7. eclipse 工程中使用引入maven项目遇到maven-resources-plugin:2.6 找不到
  8. Java中的迭代与递归
  9. 用 Rust 开发 Linux,可行吗?
  10. 牛客网暑期ACM多校训练营(第三场): E. Sort String(KMP)
  11. 开课吧课堂之如何创建多级类层次
  12. node-amqp 使用fanout发布订阅rabbitmq消息
  13. 【题目记录】——2021 年百度之星·程序设计大赛 - 初赛二
  14. js上传文件到OSS
  15. 1 Spark机器学习 spark MLlib 入门
  16. Spring Boot 定制个性 banner
  17. 计算机数字信号和模拟信号,模拟信号和数字信号有什么区别
  18. 《iOS 开发进阶(唐巧)》读书笔记
  19. 在VM虚拟机上安装Red Hat Enterprise Linux
  20. root账号无法通过SSH登录阿里云ECS

热门文章

  1. AVB(一):提前装载分区
  2. 混沌性时间序列的分析方法:EEMD+相空间重构
  3. 浏览器上传文件窗口空白无内容或者点击按钮不弹出文件选择的问题
  4. NeoVim 安装及配置
  5. Linux中的fork()和clone()函数
  6. 通过双击.py文件启动Python IDE编辑器
  7. 如何用SQL生成一张日期维度表?
  8. 【企业上云】云计算介绍以及分层Iaas、Pass、SaaS
  9. 解压缩工具:Archiver 3 for Mac
  10. 详解Seaborn,看这一篇就够了