华为2018校园优先招聘深圳地区笔试代码分享
2017-07-13 15:49
459 查看
第一题:括号匹配问题。
这一类问题是任何一本书在将Java栈处理的时候都会用到的,用栈处理是最方便的。
第二题:类似于POJ3125,只不过这次问题要求是全部打印,不知道问题出在哪里了,我这次只有60%的AC率,希望大佬来解答一下。
解题思路:其实这种输出可以看成从最高优先级输出一遍, 然后再从最后一个最高优先级点开始,遍历一遍输出下一个优先级的所有文件,这时候只需要维护一个指针,指向上一级(或上上级,上上上级-取决于有没有这些级的文件)的最后一个输出文件的位置即可,然后从这个位置开始做当前级的文件输出并保留当前级文件最后一个点的位置。
第三题:左上角到右下角收集最多圣诞果问题。
解题思路:这个题是一个典型的dp问题,初始化第一行和第一列之后,利用当前i,j点一定是从i-1,j和i,j-1点最大的那个过来的概念,最终输出dp数组右下角元素即可。
这一类问题是任何一本书在将Java栈处理的时候都会用到的,用栈处理是最方便的。
import java.util.Scanner; import java.util.Stack; public class Main{ public static void main(String args[]){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String str = in.next(); System.out.println(check(str)); } in.close(); } public static boolean check(String str){ Stack<Character> st = new Stack<Character>(); for(int i=0;i<str.length();i++){ if(str.charAt(i)=='('||str.charAt(i)=='['||str.charAt(i)=='{') st.push(str.charAt(i)); if(str.charAt(i)==')'){ if(st.pop()!='(') return false; } if(str.charAt(i)==']'){ if(st.pop()!='[') return false; } if(str.charAt(i)=='}'){ if(st.pop()!='{') return false; } } return true; } }
第二题:类似于POJ3125,只不过这次问题要求是全部打印,不知道问题出在哪里了,我这次只有60%的AC率,希望大佬来解答一下。
解题思路:其实这种输出可以看成从最高优先级输出一遍, 然后再从最后一个最高优先级点开始,遍历一遍输出下一个优先级的所有文件,这时候只需要维护一个指针,指向上一级(或上上级,上上上级-取决于有没有这些级的文件)的最后一个输出文件的位置即可,然后从这个位置开始做当前级的文件输出并保留当前级文件最后一个点的位置。
import java.util.Scanner; public class Main{ public static void main(String args[]){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String str = in.nextLine(); int cnt = 0; for(int i=0;i<str.length();i++){ if(str.charAt(i)>='1' && str.charAt(i)<='9'){ cnt++; } } int[] mat = new int[cnt]; int[] count = new int[10]; int flag = 0; for(int i=0;i<str.length();i++){ if(str.charAt(i)>='1' && str.charAt(i)<='9'){ int num = Integer.parseInt(String.valueOf(str.charAt(i))); mat[flag] = num; count[num]++; flag++; } } StringBuffer res = new StringBuffer(); int pos = 0; for(int i=9;i>0;i--){ while(count[i]!=0){ int chPos = pos%cnt; if(mat[chPos]==i){ res.append(chPos+", "); count[i]--; } pos++; } } if(res.length()==0){ System.out.println(""); }else{ System.out.println(res.substring(0,res.length()-2)); } } in.close(); } }
第三题:左上角到右下角收集最多圣诞果问题。
解题思路:这个题是一个典型的dp问题,初始化第一行和第一列之后,利用当前i,j点一定是从i-1,j和i,j-1点最大的那个过来的概念,最终输出dp数组右下角元素即可。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int M = in.nextInt(); int N = in.nextInt(); int[][] arr = new int[M] ; for(int i=0;i<M;i++){ for(int j=0;j<N;j++){ arr[i][j] = in.nextInt(); } } int[][] dp = new int[M] ; dp[0][0] = arr[0][0]; for(int i=1;i<N;i++){ dp[0][i]=arr[0][i]+dp[0][i-1]; } for(int i=1;i<M;i++){ dp[i][0]=arr[i][0]+dp[i-1][0]; } for(int i=1;i<M;i++){ for(int j=1;j<N;j++){ dp[i][j] = Math.max(dp[i-1][j]+arr[i][j],dp[i][j-1]+arr[i][j]); } } System.out.println(dp[M-1][N-1]); } in.close(); } }
相关文章推荐
- 华为2018届校园招聘笔试题目以及相应代码分享 软件开发岗位
- 京东2018年校园招聘笔试代码环节答案分享
- 美团2018校园招聘内推笔试代码分享
- 2012华为校园招聘上机笔试题
- 华为2013校园招聘上机笔试题-计算整数二进制表达式中0的个数
- 华为2013校园招聘上机笔试题 ---2 字符串处理转换
- 大正数减法(华为2013校园招聘上机笔试题 )
- 2014年360校园招聘笔试题,干货分享
- 2012届华为校园招聘上机考试题目及参考代码
- 华为2016校园招聘笔试题
- 华为2013校园招聘上机笔试题--字串转换
- 华为2013校园招聘上机笔试题
- 华为2016校园招聘上机笔试题
- 华为2013校园招聘上机笔试题-对源字符串中的字符串进行查找替换
- 我与西门子的面试全过程(一面+二面)_2008校园招聘_笔试与面试分享_UNUS.CN
- 衣服不是最重要的–现场面试要注意的几个细节 | 2008校园招聘网 - 实习与笔试面试经验分享 - UNUS.CN
- 华为2013校园招聘上机笔试题-整数转换成字符串
- 华为2013校园招聘上机笔试题-杭州-亲身体会
- 华为2013校园招聘上机笔试题-数字转化为字符串,并判断有无重复字符串
- 华为2013校园招聘上机笔试题