2019拼多多内推java笔试

1自动售货机有N瓶复制可乐。复制可乐非常神奇,喝了它的人会复制出一个自己来!现在有Alice,Bob,Cathy,Dave四个人在排队买复制可乐。买完的人会马上喝掉,然后他和他的副本会重新去队伍的最后面排队买可乐。问最后一个买到复制可乐的人叫什么名字?

public static void test5(){
        Scanner in = new Scanner(System.in);
        int n= in.nextInt();
        int base=4;
        int exp=1;
        while(n>base*exp){

            n=n-base*exp;
            exp=exp*2;
        }
        int num=0;
        for(int i=1;i<5;i++){
            for(int j=1;j<exp+1;j++){
                num=num+1;
                if(num==n){
                    if(i==1)
                        System.out.println("Alice");
                    if(i==2)
                        System.out.println("Bob");
                    if(i==3)
                        System.out.println("Cathy");
                    if(i==4)
                        System.out.println("Dave");
                }

            }
        }
    }

 2四年一度的世界杯又来了!小多在公司内发起了一个票选最强球星的活动。共有N个候选球星,每位投票者需要在选票上为每位候选球星评定一个实例等级,等级由英文字母表示,'a'级最高,'z'级最低,共26级。我们称候选球星X强于候选球星Y,当X的评级比Y高的票数高于Y的评级比X高的票数。若一个候选球星强于任一其他候选球星时,则称该球星为球王。根据这个规则,之多指挥有一个球王。需要注意的是也可能没有球王。现在给出所以后M张选票,请你帮小多判断以下哪位候选球星是球王。

输入描述:

第一行包含两个整数N、M,分别表示候选球星数量以及票选数量。

接下来有M行,每行是一个长度为N的字符串,每个字符串表示一张选票上的信息。每个字符串的第k(0<=k<N)个字符,表示这张选票对第k个候选球星的评级。

数据范围:1<=N<=50 1<=M<=50 字符串只包含小写英文字母

输出描述:

若有球王,则输出一行仅包含一个整数X,表示编号为X(0<=X<N)的候选球星为球王;若没有球王,则输出一行仅包含一个整数-1。

public static void test6(){
        //输入第一行,读取n和m
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        String[] strs = s.split(" ");

        int n = Integer.valueOf(strs[0]);
        int m = Integer.valueOf(strs[1]);
        //读取投票结果,存放在一个数组中,数组中存放的是选票上的信息
        String[] str = new String[m];
        for (int i = 0; i < m; i++)
            str[i] = in.nextLine();
    
 
        String[] new_str = new String[n];

        for (int i = 0; i < n; i++) {
            char[] c = new char[m];
            for (int j = 0; j < m; j++) {
                c[j] = str[j].charAt(i);
            }
            Arrays.sort(c);
            new_str[i] = new String(c);
        }

        
        //使用比较字符串的大小,判断是否存在球星,如果有最大值且大于一个,则不存在球星。
        int max = 0;

        for (int i = 1; i < n; i++) {
            if (new_str[max].compareTo(new_str[i]) > 0) {
                max = i;
            }
            if (new_str[max].compareTo(new_str[i]) == 0) {
                System.out.println("-1");
                return;
            }
        }

        System.out.println(max);

    }

3运货物问题

N个货物分别重W1、W2、…Wn,(100<=W<=300),一辆车可以运重量300的货,问需要多少辆车。

public static void test8(){
        Scanner in = new Scanner(System.in);
        String str=in.nextLine();
        String[] s= str.split(" ");
        int w[]=new int[s.length];
        for(int i=0;i<s.length;i++)
            w[i]=Integer.valueOf(s[i]);
        boolean mark[]=new boolean[s.length];
        for(int i=0;i<s.length;i++)
            mark[i]=false;
        Arrays.sort(w);
        int left=0,right=s.length-1,res=0;
        while(right>=0&&w[right]>200){
            res++;
            right--;
        }
        //保存第一个<=200的元素下标
        int nr = right;
        while(right>0&&w[right]==200)
            right--;
        while(left<s.length&&w[left]==100)
            left++;
        while(left<right){
            if(w[left]+w[right]<=300){
                res++;
                mark[left]=mark[right]=true;
                left++;
                right--;
            }else{
                right--;
            }
        }
        right=nr;
        left=0;
        while(left<right){
            if(mark[left]){
                left++;
            }else if(mark[right]){
                right--;
            }else if(left==right){
                res++;
                break;
            }else if(w[right]==100){
                int len=right-left+1;
                res=res+len/3+(len%3>0?1:0);
                break;
            }else if(w[left]+w[right]<=300){
                res++;
                left++;
                right--;
            }else{
                res++;
                right--;
            }
        }
        System.out.println(res);
    }

猜你喜欢

转载自blog.csdn.net/wuyifan1115/article/details/81169820