小米2017校招笔试题

Juntaran Juntaran     2022-08-06     622

关键词:

只过了20%...我日

树的高度
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
现在有一棵合法的二叉树,树的节点都是用数字表示,
现在给定这棵树上所有的父子关系,求这棵树的高度

输入
输入的第一行表示节点的个数n(1<=n<=1000,节点的编号为0到n-1)组成,
下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出
输出树的高度,为一个整数

样例输入
5
0 1
0 2
1 3
1 4
样例输出
3

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <malloc.h>
 4 #include <bits/stdc++.h>
 5 
 6 using namespace std;
 7 
 8 void SortTwoArray(int* parent, int* node, int length)
 9 {
10     int temp1;
11     int temp2;
12     for (int i = 0; i < length; ++i)
13     {
14         for (int j = 0; j < length - i; ++j)
15         {
16             if (node[j] > node[j+1])
17             {
18                 temp1 = node[j+1];
19                 node[j+1] = node[j];
20                 node[j] = temp1;
21                 
22                 temp2 = parent[j+1];
23                 parent[j+1] = parent[j];
24                 parent[j] = temp2;
25             }
26         }
27     }
28 }
29 
30 // 二分查找
31 int Binary_Search(int* nums, int length, int key)
32 {
33     int left, right, middle;
34     left  = 0;
35     right = length - 1;
36 
37     while (left <= right)
38     {
39         middle = (left + right) / 2;
40         if (key < nums[middle])
41         {
42             right = middle - 1;
43         }
44         else if (key > nums[middle])
45         {
46             left = middle + 1;
47         }
48         else
49         {
50             return middle;
51         }
52     }
53     return -1;
54 }
55 
56 
57 int main()
58 {
59     int n;
60     while (scanf("%d", &n) != EOF)
61     {
62         if (n == 1)
63         {
64             int a, b;
65             scanf("%d %d", &a, &b);
66             printf("1
");
67             continue;
68         }
69         int length = n - 1;
70         int* parent = (int*)malloc(sizeof(int)*length);
71         int* node = (int*)malloc(sizeof(int)*length);
72         for (int i = 0; i < length; ++i)
73         {
74             scanf("%d", &parent[i]);
75             scanf("%d", &node[i]);
76         }
77         SortTwoArray(parent, node, length);
78         int height = 1;
79         int Num = node[length - 1];
80         while (Num != 0)
81         {
82             int pos = Binary_Search(node, length, Num);
83             Num = parent[pos];
84             height ++;
85         }
86         printf("%d
", height);
87         free(parent);
88         free(node);
89     }
90     return 0;
91 }

 

微软2017校招笔试题3registrationday

题目It‘sHUniversity‘sRegistrationDayfornewstudents.ThereareMofficesinHUniversity,numberedfrom1toM.Studentsneedtovisitsomeoftheminacertainordertofinishtheirregistrationprocedures.Theofficesareindifferent 查看详情

lgyx2017校招笔试题

前言今天通知过了笔试,但总感觉有些笔试没来得及做的题不解决不舒服斯基。题目 大意就是,给你个形如a,b,c,ab,bb,cb,ac,bc,cc,aab,bab,cab,abb,bbb,cbb,acb,bcb,ccb......按某种规律排列的无限长的字符串数组,要求:1)给定一个位置,... 查看详情

网易2017年校招笔试题最大的奇约数

题目:定义函数f(x)为x的最大奇数约数,x为正整数,例如f(44)=11.现在给出一个N,需要求出f(1)+f(2)+f(3)+...+f(N)例如:N=7f(1)+f(2)+f(3)+f(4)+f(5)+f(6)+f(7)=1+1+3+1+5+7=21. 分析:奇数的最大约数是自身,偶数的最大约数是是除去所有偶因子之... 查看详情

奇虎3602017校招笔试题

最强大脑时间限制:C/C++语言1000MS;其他语言3000MS内存限制:C/C++语言65536KB;其他语言589824KB题目描述:小B乘火车和朋友们一起在N市到M市之间旅行。她在路途中时睡时醒。当她醒来观看窗外的风景时,注意到每个火车站都有一... 查看详情

校招笔试题大杂烩

1、某表达式的前缀形式为"+-*^ABCD/E/F+GH",运算符优先级为^>*/>-+,它的中缀形式为(C)A  A^B*C-D+E/F/G+H  B A^B*(C-D)+(E/F)/G+H  C  A^B*C-D+E/(F/(G+H))  D A^B*(C-D)+ 查看详情

快手2019校招笔试题(代码片段)

目的:分别从前面和后面开始找划分点,使得前面的数字之和=后面的数字之和目标表述:sum(前面m个数)=sum(后面n个数)s.t.m+n<=N(总个数)变形:sum[i]表示前i个数之和,sum2[i]表示后i... 查看详情

1~n的全排列--阅文集团2018校招笔试题

题目大意:给定整数n,求出1~n的全排列示例输入:n=3输出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]1importjava.util.Scanner;2importjava.util.ArrayList;34publicclassMain{5privatevoidfunc(ArrayList<Integer>nArray,Arra 查看详情

兆易创新9月校招笔试题_ic设计/验证

       还有器件岗位的笔试题:1、CMOS中哪些制造步骤中用到了离子注入,需要注意哪些?2、有哪些薄膜制备方法?各有什么优缺点?3、COMS的制作步骤,简要叙述。4、载流子的输运方式有哪些,简要叙... 查看详情

天上掉馅饼--移动研究院2018校招笔试题

题目:天上掉馅饼时间限制:C/C++语言1000MS;其他语言3000MS内存限制:C/C++语言131072KB;其他语言655360KB题目描述:大家都知道“天上不会掉馅饼”这句话,但是有一天,小明在回学校的路上,天上还真掉起了馅饼。小明的人品实... 查看详情

网易2019校招笔试题-瞌睡(代码片段)

分析:由于小易清醒的时间是连续的,所以整个搜索空间为O(n),根本不需要贪心或者动态规划就能搞定。小易这堂课获得的兴趣值分为两部分:本来就清醒时获得的兴趣值,被叫醒的k分钟获得的兴趣值。因为... 查看详情

阿里巴巴2016校招笔试题(含答案解析)(代码片段)

3、将1,2,3,……,99,100任意排列成一个圈,相邻两数的差的绝对值求和最多为()A:100B:198C:200D:500E:2500F:5000答案:F4、如果下列的公式成立:84*148=B6A8。则采用的是(&# 查看详情

快手2019校招笔试题(代码片段)

目的:分别从前面和后面开始找划分点,使得前面的数字之和=后面的数字之和目标表述:sum(前面m个数)=sum(后面n个数)s.t.m+n<=N(总个数)变形:sum[i]表示前i个数之和,sum2[i]表示后i... 查看详情

网易2017秋招笔试题3:最长公共子括号序列长度

【问题来源】网传的2017网易秋招笔试题【问题描述】 【算法思路】 下面的解题思路摘自 http://www.cnblogs.com/Atanisi/p/7500186.html刚看到题我就想到暴力解,深搜出所有合法的括号序列,再依次比较公共子序列的长度,返... 查看详情

tx2017秋招笔试题之素数对

问题描述:给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。如,输入为10,程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))输入描述:输入包括一个整数n,(3... 查看详情

2017华为优招笔试题

 哎,没有接到笔试通知,不知道为啥就错过了。之后见到题目,前两道编程题。其实都见过类似的题目,有点思路,但是直接快速完整实现出来,水平还是达不到。这样的题目,也不算难,三道编程题至少AC两道才算可以。... 查看详情

校招笔试题

题目描述:给出m个字符串S1,S2,...,Sm和一个单独的字符串T。请在T中选出尽可能多的子串同时满足:1)这些子串在T中互不相交。2)这些子串都是S1,S2,...,Sm中的某个串。问最多能选出多少个子串。输入第一行一个数m(1≤... 查看详情

美团2017秋招笔试题拼凑钱币

给你六种面额1、5、10、20、50、100元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 输入描述:输入包括一个整数n(1≤n≤10000)输出描述:输出一个整数,表示不同的组合方... 查看详情

2017腾讯秋招笔试题之编码

Description:  假定一种编码的编码范围是a~y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下:a,aa,aaa,aaaa,aaab,aaac,……,b,ba,baa,baaa,baab,baac……,yyyw,yyyx,yyyy其中a的Index为0,aa的Index为1,aaa的... 查看详情