美团后端笔试20220409

一共五道编程题

  1. 套圈,就是获得对应的分值
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/*小团和小美在玩数圈游戏,游戏规则是这样的:给出一个数字,小美需要立刻说出这个数字包含的圈圈的数量。因为小团提问的频率非常快,小美希望你能帮她用程序来计算出来。

例如,对于数字0,包含1个圈,对于数字2,包含0个圈,对于数字8,包含2个圈。

我们给出对圈的认定标准如下表:*/
public class Main01 {
    public static void main(String[] args) {
        Map<Integer, Integer> map = new HashMap<>();
        map.put(0,1);
        map.put(1,0);
        map.put(2,0);
        map.put(3,0);
        map.put(4,0);
        map.put(5,0);
        map.put(6,1);
        map.put(7,0);
        map.put(8,2);
        map.put(9,1);
        int sum = 0;
        Scanner scanner = new Scanner(System.in);
        Integer i = scanner.nextInt();
        char[] chars = String.valueOf(i).toCharArray();
        for (int j = 0; j < chars.length; j++) {
            sum += map.get(chars[j]-48);
        }
        System.out.println(sum);
    }
}


2.士兵站队,每个士兵有个身高有个名字,先根据身高排序,身高相同则根据姓名中字符大小排序,小的在前,字符相同名字长度短的在前,这道题重写比较器没有ac很可惜
3.问路,就是给两行数据代表哪里到哪里联通,然后问路通不通,每条路是双向的,我就是拿二维数组做记录,在判断

import java.util.Scanner;

/**第一行两个正整数n和m,分别表示地图上的地点数(地点从1到n进行标号),和地图中包含的道路数。

 接下来2行,每行m个正整数,其中第1行第 i 个数为u,其中第2行第 i 个数为v,表示地点u和地点v之间有一条直接的通路。(保证无重边,无自环)

 接下来一个正整数q,表示小美想询问的次数。

 接下来q行,每行两个正整数u和v,表示一次询问:地点u和地点v之间是否有一条直接的通路呢?

 (题中道路为双向路,数字间两两有空格隔开)

 n<=10000, m<=10000, q<=300

 1<=u<=n, 1<=v<=n, u≠v*/
public class Main03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[][] path = new int[n+1][n+1];
        int[] row = new int[m];
        for (int i = 0; i < m; i++) {
            row[i] = scanner.nextInt();
        }
        int[] col = new int[m];
        for (int i = 0; i < m; i++) {
            col[i] = scanner.nextInt();
        }
        int t = 0;
        while (t < m){
            path[row[t]][col[t]]++;
            path[col[t]][row[t]]++;
            t++;
        }
        int q = scanner.nextInt();
        for (int i = 0; i < q; i++) {
            int i1 = scanner.nextInt();
            int i2 = scanner.nextInt();
            if (path[i1][i2] != 0){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
        }
//        for (int i = 0; i < n; i++) {
//            for (int j = 0; j < n; j++) {
//                System.out.print(path[i][j]);
//            }
//            System.out.println();
//        }
    }
}

4.2*2的一个方格填充颜色,给n种颜色返回他的方案数,要求两个相邻颜色不能相同

5.搭积木,先给出一个当前积木的拜访,再给出一个预期的积木拜访,每次可以从右拿一个或者向左放一个,问从当前到最后预期的执行次数

-_-蓝桥杯加笔试直接做蒙,还是要多多练习。冲!

你可能感兴趣的:(笔试,java,后端)