华为2014机考样题及答案

来源:互联网 发布:excel2003 sql 编辑:程序博客网 时间:2024/06/06 08:28
初级题:从考试成绩中划出及格线 
10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:
(1) 及格线是10的倍数;
(2) 保证至少有60%的学生及格;
(3) 如果所有的学生都高于60分,则及格线为60分

 输入:输入10个整数,取值0~100

 输出:输出及格线,10的倍数


public static int passLine(int[] in){Arrays.sort(in);if(in[0] >= 60){return 60;}else{return in[4] - in[4] % 10;}}

 

中级题:亮着电灯的盏数
 
一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。
n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。
注:电灯数和学生数一致。

输入:电灯的数量
输出:亮着的电灯数量

public static int light(int n){int c[] = new int[n + 1];int count = 0;for(int i = 1; i <= n; i++){c[i] = 1;}for(int i = 2; i <= n; i++){for(int k = i; k <= n; k++){if(k % i == 0){if(c[k] == 1){c[k] = 0;}else{c[k] = 1;}}}}for(int j = 1; j <= n; j++){if(c[j] == 1){count++;}}return count;}


 高级题:地铁换乘
已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。
地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18
地铁线A(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15

输入:输入两个不同的站名

输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次


package huawei;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class BFS {public static class Node{List neighbors;Node pathParent;String name;public Node(String name){this.name = name;neighbors = new LinkedList();}public String toString(){return name;}}public List search(Node start, Node goal){LinkedList<Node> visited = new LinkedList<Node>();LinkedList<Node> unVisited = new LinkedList<Node>();unVisited.add(start);start.pathParent = null;while(!unVisited.isEmpty()){Node node = (Node)unVisited.removeFirst();if(node == goal){return constructPath(node);}else{visited.add(node);Iterator i = node.neighbors.iterator();while(i.hasNext()){Node neighbor = (Node) i.next();if(!visited.contains(neighbor) && !unVisited.contains(neighbor)){unVisited.add(neighbor);neighbor.pathParent = node;}}}}return null;}private List constructPath(Node node) {LinkedList path = new LinkedList();while(node.pathParent != null){path.addFirst(node);node = node.pathParent;}return path;}public static void main(String[] args) {Node nodeA1 = new Node("A1");Node nodeA2 = new Node("A2");Node nodeA3 = new Node("A3");Node nodeT1 = new Node("T1");Node nodeA4 = new Node("A4");Node nodeA5 = new Node("A5");Node nodeT2 = new Node("T2");Node nodeA6 = new Node("A6");Node nodeB1 = new Node("B1");Node nodeB2 = new Node("B2");Node nodeB3 = new Node("B3");Node nodeB4 = new Node("B4");Node nodeB5 = new Node("B5");Node nodeB6 = new Node("B6");nodeA1.neighbors.add(nodeA2);nodeA1.neighbors.add(nodeA6);nodeA2.neighbors.add(nodeA1);nodeA2.neighbors.add(nodeA3);nodeA3.neighbors.add(nodeA2);nodeA3.neighbors.add(nodeT1);nodeT1.neighbors.add(nodeA3);nodeT1.neighbors.add(nodeA4);nodeT1.neighbors.add(nodeB2);nodeT1.neighbors.add(nodeB3);nodeA4.neighbors.add(nodeA3);nodeA4.neighbors.add(nodeA5);nodeA5.neighbors.add(nodeA4);nodeA5.neighbors.add(nodeT2);nodeA6.neighbors.add(nodeT2);nodeA6.neighbors.add(nodeA1);nodeT2.neighbors.add(nodeA5);nodeT2.neighbors.add(nodeA6);nodeT2.neighbors.add(nodeB4);nodeT2.neighbors.add(nodeB3);nodeB1.neighbors.add(nodeB2);nodeB2.neighbors.add(nodeB1);nodeB2.neighbors.add(nodeT1);nodeB3.neighbors.add(nodeT1);nodeB3.neighbors.add(nodeB4);nodeB4.neighbors.add(nodeB3);nodeB4.neighbors.add(nodeT2);nodeB5.neighbors.add(nodeT2);nodeT2.neighbors.add(nodeB4);nodeT2.neighbors.add(nodeB5);nodeB5.neighbors.add(nodeB6);nodeB6.neighbors.add(nodeB5);        BFS bfs = new BFS();        System.out.println("From nodeA1 to nodeB4: " +            bfs.search(nodeA1, nodeB4));}}