有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果您只能投资10美元增量,java输出投资10只股票的方法总数

这是我在美国运通面试时得到的一个问题,虽然将答案可视化很容易,但我很难弄清楚如何实际生成答案

有没有人能通过分而治之的方法来解决这样的组合问题

示例输出:

这些数组代表了10种不同的股票,以及你在每种股票上投资了100美元

(100,0,0,0,0,0,0,0,0,0,0,0), (0,100,0,0,0,0,0,0,0,0,0)等

(90,10,0,0,0,0,0,0,0,0,0),(90,0,10,0,0,0,0,0,0)等

每一种可能的组合


共 (1) 个答案

  1. # 1 楼答案

    可以使用递归

    在每只股票上i你都有一笔钱要花,你可以在任何地方以10的增量花掉这笔钱。对于最后一家店,你必须花掉剩下的钱

    每次组合后,我都会调用侦听器、回调或打印数组

    public static void printCombinations(int stocks, int cash, int cashMultiple) {
        int[] amounts = new int[stocks];
        printCombinations(amounts, 0, cash, cashMultiple);
    }
    
    public static void printCombinations(int[] amounts, int n, int cash, int cashMultiple) {
        if (n == amounts.length-1) {
            amounts[n] = cash;
            System.out.println(Arrays.toString(amounts));
            return;
        }
        for (int i = 0; i <= cash ; i += cashMultiple) {
            amounts[n] = i;
            printCombinations(amounts, n+1, cash - i, cashMultiples);
        }