如果您只能投资 10 美元增量,则输出投资 10 只股票的方式总数
Output total number of ways to invest in 10 stocks if you can only invest 10$ increments
我在 AMEX 的面试中得到了这个问题,虽然想象答案很容易,但我很难弄清楚如何实际生成它。
有没有人有解决这种分而治之组合问题的好方法?
示例输出:
数组代表 10 只不同的股票,以及您在 100 美元中对每只股票投资了多少。
(100, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(0, 100, 0, 0, 0, 0, 0, 0, 0, 0) 等
(90, 10, 0, 0, 0, 0, 0, 0, 0, 0), (90, 0, 10, 0, 0 ,0, 0, 0, 0 ,0) 等
每个可能的组合。
你可以使用递归。
在每只股票上 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);
}
我在 AMEX 的面试中得到了这个问题,虽然想象答案很容易,但我很难弄清楚如何实际生成它。
有没有人有解决这种分而治之组合问题的好方法?
示例输出:
数组代表 10 只不同的股票,以及您在 100 美元中对每只股票投资了多少。
(100, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 100, 0, 0, 0, 0, 0, 0, 0, 0) 等
(90, 10, 0, 0, 0, 0, 0, 0, 0, 0), (90, 0, 10, 0, 0 ,0, 0, 0, 0 ,0) 等
每个可能的组合。
你可以使用递归。
在每只股票上 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);
}