腾讯笔试 4题

第一题,奇偶问题

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] a = new int[n];
        int[] b = new int[n];
        for (int i = 0; i < n; i++)
            a[i] = in.nextInt();
        for (int i = 0; i < m; i++)
            b[i] = in.nextInt();

        int r = 0;
        int ax = 0, ay = 0, bx = 0, by = 0;
        for (int i = 0; i < n; i++) {
            if (a[i] % 2 == 0)
                ax++;
            if (a[i] % 2 == 1)
                ay++;
        }
        for (int i = 0; i < m; i++) {
            if (b[i] % 2 == 0)
                bx++;
            if (b[i] % 2 == 1)
                by++;
        }
        r = Math.min(ax, by) + Math.min(ay, bx);
        System.out.println(r);
    }
}

第二题,用户排队满意度问题

import java.util.*;

public class Main {

    static int res = Integer.MAX_VALUE, n = 0;
    static int[][] bt;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        int[][] arr = new int[n][2];
        for (int i = 0; i < n; i++) {
            arr[i][0] = in.nextInt();
            arr[i][1] = in.nextInt();
        }
        bt = arr;
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = i + 1;
        }
        perm(a, 0, a.length - 1);
        System.out.println(res);
    }

    static void perm(int[] buf, int start, int end) {
        if (start == end) {
            int t = 0;
            for (int i = 0; i <= end; i++) {
                t += bt[i][0] * (buf[i] - 1) + bt[i][1] * (n - buf[i]);
            }
            if (t < res)
                res = t;
        } else {
            for (int i = start; i <= end; i++) {
                int temp = buf[start];
                buf[start] = buf[i];
                buf[i] = temp;
                // 后续元素递归全排列
                perm(buf, start + 1, end);
                // 将交换后的数组还原
                temp = buf[start];
                buf[start] = buf[i];
                buf[i] = temp;
            }
        }
    }

}

第三题,凉了

第四题,期末考试状态最好时间段

import java.math.BigInteger;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }
        BigInteger r = BigInteger.ZERO;
        int min = 0, s = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i; j++) {
                min = Integer.MAX_VALUE;
                s = 0;
                for (int k = j; k < j + i + 1; k++) {
                    s += arr[k];
                    if (arr[k] < min)
                        min = arr[k];
                }
                BigInteger t = new BigInteger(String.valueOf(min)).multiply(new BigInteger(String.valueOf(s)));
                if (t.compareTo(r)>0)
                    r = t;
            }
        }
        System.out.println(r);
    }

}

第五题,摆放花问题

import java.util.*;

public class Main {

    static int mod = 1000000007;
    static int k = 0;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        k = in.nextInt();
        int[] a = new int[n];
        int[] b = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = in.nextInt();
            b[i] = in.nextInt();
        }
        for (int i = 0; i < n; i++) {
            System.out.println(f(a[i], b[i]));
        }
    }

    static int f(int t, int n) {
        int s = 0;
        int[] a = new int[n + 1];
        a[0] = 1;
        a[1] = 1;
        for (int i = 2; i <= n; i++) {
            a[i] = a[i - 1] + a[i - k];
        }
        for (int i = t; i <= n; i++) {
            s += a[i] % mod;
        }
        return s % mod;
    }
}
#腾讯##笔试题目##Java工程师#
全部评论
楼主,能不能讲一下种花那道题的思路,状态转换没怎么看懂
点赞 回复 分享
发布于 2019-09-02 11:00
第二题也是,全排列o(n!)复杂度也能过?
点赞 回复 分享
发布于 2019-09-02 09:26
第四题这复杂度能过?
点赞 回复 分享
发布于 2019-09-02 09:23

相关推荐

头像
05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
评论
3
17
分享

创作者周榜

更多
牛客网
牛客企业服务