贝壳2019机试题

1.家族关系   

      并差集:https://blog.csdn.net/xu1105775448/article/details/82077944 

/**
 * 功能描述: 
* 时间限制:C/C++语言1000MS;其他语言3000MS * 内存限制:CC++语言65536KB;其他语言589824KB * * 题目描述: * 小明和小红是亲兄妹,他俩起翻了翻他们家的族谐,发现他们家非常庞大,有非常多的名字在族谐里面。族谱中会写消楚每一个人的父亲是谁,当然每个人都只会有一个父亲。 * 对于祖先的定义,我们在这儿个例子:族里面会写小王的父亲是小丁,小丁的父亲是小东,那么实际上小东就是小王的爷爷,也是小王的祖先 * 小明很聪明,小明理了理他们的家庭关系,很快就青清楚了,知道了族谐中每一个人的祖先关系。 * 但是小红却依旧困感,于是问了很多问题,希望你能够解答。 * 小红的问题是,请问A是B的祖先关系是什么?究竞A是不是B的祖先,或者说B * 是A的祖先,亦或者B和A不存在祖先关系呢 * 输入 * 第一行包括一个整数n表示家族成员个数 * 接下来n行每行对整数对a和b表示a是b的父亲,或者b是a的父亲,这需要你 * 来判断 * 如果b是-1,那么就是整个家族的根,也就是举分最大的人,保证只有一个。 * 第n+2行是一个整数m表示小红的询问个数 * 接下来m行,每行两个正整数A和B * 表示小红想知道A是8的祖先关系 * n,ms4000,每个节点的编号都不超过40000 * 输出 * 对于每一个询问 * 1表示A是B的祖先,输出2表示B是A的祖先,都不是输出0 * 样例输入 * 10 * 1 -1 * 3 1 * 4 1 * 5 1 * 6 1 * 7 1 * 8 1 * 9 1 * 10 1 * 2 10 * 2 3 * 2 4 * 2 5 * 2 10 * 样例输出 * 1 * 0 * 0 * 0 * 2 * @Author: 万少波 * @Date: 2019/8/10 13:57 */
public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入家庭关系的个数:");
        int readTime = scanner.nextInt();
        System.out.println("请依次输入"+readTime+"个成员以及其父亲:");
        if(readTime <= 0){
            System.exit(0);
        }
        int[] v = new int[readTime+1];
        while(readTime > 0) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            v[a] = b;
            readTime--;
        }
        int m ;//询问个数
        System.out.println("请输入询问的个数:");
        List result = new ArrayList();
        m = scanner.nextInt();
        for(int i =0;i

2.计算器  

  假设有这样一个计算器,该计算器只有两个按钮,按下第一个按钮能使显示数值减少1,按下第二个按钮能使显示数值乘以2,当前显示数值为N, 那么至少要按多少次按钮才能显示数值编程M?

输入:输入两个整数N和M,1≤N,M≤109。
输出:是显示数值变成M的最少按钮次数。

样例输入:
4 5
样例输出:
3
 

 

你可能感兴趣的:(笔试题)