关键词:
只过了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的... 查看详情