华为上机面试题总结
2015-03-31 09:46
225 查看
去华为面试,到那里,直接去上机。然后从他们的题库中抽取两道题,其中一题是:判断括号的正确性,比如“()(())”这个是正确的。另一题是,王子逃跑题。
我选择是王子题:王子在一个要塌的洞里,王子有魔法M,一次闪烁60米耗时1秒,消耗10点魔法值,只有在静止的时候一秒恢复4点魔法值,王子跑的速度是17m/s。问王子逃出去的最短时间,或者不能逃出去,最远能跑多远。其中 距离是S,塌陷时间是T。其中,S=0,已经逃出去,T=0,则逃不出去。
M、S、T可以当成参数传递,不是固定的值。
我当时的思路有问题,从而导致没有写出来。昨天我理清思路,花费一些时间把代码code出来。下面代码有优化的地方,在此不在优化。
总结:
1、碰到问题时,不要着急,思路很重要,先把题理解清楚最重要。
2、不得不说,自己确实是菜鸟。有关算法或者是数据结构方面太菜。
3、努力加强自己。记录下来,共勉
PS:我没有上网搜,不知道有没有答案,如果泄露了华为的题,请通知,我立刻删除。这段代码,我没有做详细的测试,没有做详细的判断。仅供自己参考。
。
我选择是王子题:王子在一个要塌的洞里,王子有魔法M,一次闪烁60米耗时1秒,消耗10点魔法值,只有在静止的时候一秒恢复4点魔法值,王子跑的速度是17m/s。问王子逃出去的最短时间,或者不能逃出去,最远能跑多远。其中 距离是S,塌陷时间是T。其中,S=0,已经逃出去,T=0,则逃不出去。
M、S、T可以当成参数传递,不是固定的值。
我当时的思路有问题,从而导致没有写出来。昨天我理清思路,花费一些时间把代码code出来。下面代码有优化的地方,在此不在优化。
总结:
1、碰到问题时,不要着急,思路很重要,先把题理解清楚最重要。
2、不得不说,自己确实是菜鸟。有关算法或者是数据结构方面太菜。
3、努力加强自己。记录下来,共勉
PS:我没有上网搜,不知道有没有答案,如果泄露了华为的题,请通知,我立刻删除。这段代码,我没有做详细的测试,没有做详细的判断。仅供自己参考。
public class PrinceEscape { private final static float speed = 17; private final static float jump_range = 60; private final static float use_mana = 10; private final static float recover_mana = 4; private static int recoverMana(int mana) { if (mana >= 10) { return 0; } else { float r = use_mana - mana; return (int) Math.ceil(r/recover_mana); } } public static void main(String[] args) { Result s = judge(0, 200, 11); System.out.println(s.getType()+"===="+s.getTime()+"==="+s.getRange()); } /** * 判断使用逃跑方式 * @param m 剩余mana值 * @param s 剩余距离 * @param t 剩余时间 * @return Result */ public static Result judge(int m, int s, int t) { int qTime = 0; int mana = 0; Result result = new Result(); if (s <= 0) { result.setRange(0); result.setTime(0); result.setType(1); System.out.println("已经逃出!"); return result; } if ( m < 10 ) { qTime = recoverMana(m); mana =(int) (m + qTime * recover_mana); } else { if (s < jump_range) { result.setRange(s); result.setTime(1); result.setType(1); System.out.println("用跳,一秒逃出"); return result; } System.out.println("用跳,一次"); Result r = judge(mana-10, s-60, t-1); result.setType(r.getType()); result.setTime(1 + r.getTime()); result.setRange(60+r.getRange()); return result; } qTime += 1; if (qTime < t) { int runRange = (int) (speed * qTime); if (runRange >= s) { System.out.println("用跑,一次"); result.setRange(s); result.setTime((int)Math.ceil(s/speed)); result.setType(1); return result; } else if (s <= jump_range) {//可以跳出去 result.setRange(s); result.setTime(qTime); System.out.println("用跳,一次"); result.setType(1); return result; } else { // 此时,闪烁的距离是60m。跑的距离是runRange if (runRange < jump_range) { System.out.println("用跳,一次"); Result r = judge(mana-10, s-60, t-qTime); result.setType(r.getType()); result.setTime(qTime + r.getTime()); result.setRange(60+r.getRange()); return result; } else { // 此时,应该判断第二次使用闪烁时,需要多少时间恢复mana,然后再比较一次,看看用哪一种形式。 // 当m是,0、1、2、3的时候,恢复mana时间是3秒,加上跳的一秒是四秒,68大于60,而此时还没有跳完。 m = mana - 10; t = t-qTime; int qTime1 = recoverMana(m)+1; // 此时跳跃2次,120m // runRange += 17*qTime // 然后再判断,S的距离,时间,如果时间大于t,则只能用跑,如果不大于,再比较距离 if (t < qTime1) { System.out.println("用跑,一次"); Result r = judge(m, s-runRange, t); result.setRange(runRange + r.getRange()); result.setTime(qTime + r.getTime()); result.setType(r.getType()); } else { runRange += speed * qTime1; if (runRange >= s) { System.out.println("用跑,一次"); Result r = judge(m, s-runRange, t-qTime1); result.setRange(runRange + r.getRange()); result.setTime(qTime + r.getTime()+qTime1); result.setType(1); } else { System.out.println("用跳,一次"); Result r = judge(m, s-60, t); result.setRange(60 + r.getRange()); result.setTime(qTime + r.getTime()); result.setType(r.getType()); } } return result; } } } else { if (speed * t < s) { System.out.println("不能逃出"); result.setType(2); result.setRange(17*t); result.setTime(t); } else { System.out.println("可以逃出"); result.setRange(s); result.setTime((int)Math.ceil(s/speed)); result.setType(1); } return result; } } }
。
相关文章推荐
- 互联网公司校招Java面试题总结及答案——乐视、滴滴、华为
- 华为Online judge上机题总结1
- 总结华为上机笔试的失败
- java华为面试题
- (转)java华为面试题
- 华为面试题
- 华为面试题及答案(非标准)
- Sql常见面试题(总结)
- 华为面试题
- 华为的java面试题
- 华为面试题算什么,这个背会了外企随便进(3)
- 简单一道排序题,考倒多少读书人!——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!
- 笔面试题总结(经典)找工作必看
- 我10年来的学习和生活――应聘华为成功后的总结
- C语言面试题一——华为篇
- C语言面试题一——华为篇
- 利用位运算实现四则运算 -- 华为面试题
- 微软面试题总结版[zz]
- 语言面试题(2)——华为
- 对日或赴日工作日语面试题大总结(2)