小米2016/9/23部分笔试题目

原创 2016年12月26日 16:44:23
2016年9月23日, 星期五
1、 中序序列为 ABCDEFG  后序序列为 BDCAFGE   左子树中结点数为多少?(4)
2、用二进制0/1串对字符串 “babacada”进行编码,需要根据这个编码,能够解码回原来的字符串,最适合需要多长的二进制字符串?(14)


3、树的高度 

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

输入

输入的第一行表示节点的个数n1<=n<=1000,节点的编号为0n-1)组成,

下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出

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

 

样例输入

5

0 1

0 2

1 3

1 4

样例输出

3

 

Hint


(Java答案)
 package com.company;

import java.util.Scanner;

public class Main {

    public static int n;
    public static int left[] = new int[1000];
    public static int right[] = new int[1000];

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        n = scanner.nextInt();

        for(int i = 0; i < n; i++){
            left[i] = -1;
            right[i] = -1;
        }
        scanner.nextLine();

        boolean ifChild[] = new boolean[n];

        for(int i = 0; i < n - 1; i++) {
             String line = scanner.nextLine();
             int r = Integer.parseInt(line.split(" ")[0]);
             int child = Integer.parseInt(line.split(" ")[1]);
                if (left[r] == -1) {
                    left[r] = child;
                } else {
                    right[r] = child;
                }
            ifChild[child] = true;
        }

        int rootNum = 0;
        for (int i = 0; i < n; i++){
            if(ifChild[i] == false){
                rootNum = i;
                break;
            }
        }

        System.out.println(height(rootNum));
    }
    public static int height(int root){

        if(root == -1){
            return 1;
        }

        int leftheight = height(left[root]);
        int rightheight = height(right[root]);

        return leftheight > rightheight ? leftheight : rightheight + 1;
    }
}





4、句子反转

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割单词之间只有一个空格,前后没有空格。

比如:

1 “hello xiao mi”-> “mi xiao hello”

输入

输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

输出

对于每个测试示例,要求输出句子中单词反转后形成的句子

 

样例输入

hello xiao mi

样例输出

mi xiao hello



(C++答案)

1.#include <iostream>  

2.#include <string.h>  

3.using namespace std;  

4.int main()  

5.{  

6.    int n,i,j;  

7.    char str[100];  

8.    cin>>n;  

9.    getchar();  

10.     while(n--)  

11.     {  

12.         gets(str);  

13.         int len=strlen(str);  

14.         for(i=0,j=len-1;i<=j;i++,j--)  

15.         {  

16.             char temp=str[i];  

17.             str[i]=str[j];  

18.             str[j]=temp;  

19.         }  

20.         j=0;  

21.         int k,p;  

22.         for(i=0;i<=len;i++)  

23.         {  

24.             if(str[i]==' '||str[i]=='\0')  

25.             {  

26.                 for(k=j,p=i-1;k<p;k++,p--)  

27.                 {  

28.                     char temp=str[k];  

29.                     str[k]=str[p];  

30.                     str[p]=temp;  

31.                 }  

32.                 j=i+1;  

33.             }  

34.         }  

35.         for(i=0;i<len;i++)  

36.             cout<<str[i];  

37.         cout<<endl;  

38.     }  

39.     return 0;  

}  



   

5、电话号码分身

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替

"ZERO", "ONE", "TWO", "THREE", "FOUR", 

"FIVE", "SIX", "SEVEN", "EIGHT", "NINE"),

然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。

输入

第一行是一个整数T1<=T<=100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在310000之间)。

输出

输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。

 

样例输入

4

EIGHT

ZEROTWOONE

OHWETENRTEO

OHEWTIEGTHENRTEO

样例输出

0

234

345

0345

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baiBenny/article/details/53887383

小米2017校园招聘笔试题

句子反转 时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 给定一个句子(只包含字母和空格), ...
  • lezong2011
  • lezong2011
  • 2016-09-23 21:44:28
  • 1813

2016小米校招笔试题

1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次。    方法一: 首先说排序对于处理很多问题都是非常有效的,例如寻找兄弟单词等问题中,经过排序处理后,问题就明朗了很...
  • chivalrousli
  • chivalrousli
  • 2015-10-08 22:52:25
  • 1834

小米 2016届实习生招聘笔试

第一部分: 三道编程题。 1.两个整数的二进制表示中,求不同位数的个数。    比如输入1和2,01和10不同位数为2,故输出为2. 2.选择买入卖出股票的最大收益,要求交易次数为两次,但是第二次买...
  • wtyvhreal
  • wtyvhreal
  • 2015-04-26 15:03:12
  • 1053

小米2018笔试——三角形

设计一个整形三角形,三角形的每一行都比上一行多出一个数,每个数都等于它上方(如果有的话)与左上方两个数字之和,如下面所示: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 1...
  • qq_28618765
  • qq_28618765
  • 2017-09-18 22:31:50
  • 468

2016年腾讯产品笔试真题

2016年腾讯产品笔试真题     【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51...
  • guyuealian
  • guyuealian
  • 2016-04-14 19:41:41
  • 2904

中国铁塔公司2016校招笔试(部分专业知识题目)

  • 2015年12月17日 20:28
  • 434KB
  • 下载

2016 锐捷网络校园招聘笔试题目-嵌入式软件开发

  • 2015年10月30日 16:37
  • 2.79MB
  • 下载

2013~2016恒生电子笔试题目(全)

  • 2016年03月09日 13:41
  • 33.51MB
  • 下载

2014嵌入式软件工程师-笔试面试题总结 By Erik Lee

  • 2013年11月29日 21:35
  • 1MB
  • 下载

vivo2015软件类笔试题目及答案

  • 2015年03月14日 15:14
  • 3.44MB
  • 下载
收藏助手
不良信息举报
您举报文章:小米2016/9/23部分笔试题目
举报原因:
原因补充:

(最多只允许输入30个字)