【发布时间】:2021-12-14 06:25:03
【问题描述】:
给出以下数组
[10, 10, 10, 50, 50, 100, 100, 100, 500, 500, 500, 1000, 1000, 1000, 5000]
我现在想循环输出这些数字与 0 的所有组合。每个数字可以单独出现,也可以与数组中的任何其他数字一起出现(其余的应该是 0)。组合中的数字应保持原来的位置。
原数组的数字应保持不变,只能用零代替。
数组的大小始终保持不变。所以没有额外添加零。所以不可能在原始数组的数字之间插入零以增加数组的长度。
并且由于示例输入有三个 10,例如可以有前 10,然后是 0,然后是 10。
对产生组合的顺序没有要求。
我只是想用下面的例子来阐明我的想法。
[10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[10, 10, 10, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 10, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 10, 10, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[10, 10, 10, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 10, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 10, 10, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[10, 10, 10, 50, 50, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 10, 10, 50, 50, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 10, 50, 50, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 50, 50, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
在这里进行的最佳方式是什么?
【问题讨论】:
-
请发布您拥有的代码以及与此相关的具体问题。 SO 不是家庭作业解决服务。
-
@Philipp2706 你能读懂 Python 代码(没有特定结构)吗?
-
“我不认为下面例子中的顺序是正确的。”:为什么不呢?这个升序的要求比较模糊,比如
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10]中的非零数以升序出现(只有一个非零)。然而,尚不清楚这是否是可接受的组合。是否要求当包含非零值时,它应该在其原始位置? -
@Philipp2706 您需要将物品放在相同的位置吗? ([10,10,0,50,...]) 之间没有零?
-
对组合的产生顺序有要求吗?您是否意识到有超过 60 000 种这样的组合?预计会有这么大的产出吗?
标签: java arrays algorithm loops zero