具有 5 个元素的数组的算法,当填充时将元素分组
Algorithm for Array with 5 elements that when filled groups the elements
我正在尝试找出一种方法,通过将 n 个元素一个一个地相加来填充一个 int 数组。当阵列的每个点都被填满时,我希望它们在第一个可能的位置分组并重新开始。
例如:
[0, 0, 0, 0, 0]
数组看起来是空的。
如果我想添加 2 个元素,它应该如下所示:
[1, 1, 0, 0, 0]
5 个元素看起来像这样:
[1, 1, 1, 1, 1]
到目前为止,还不错。现在,在添加第六个元素时,我希望发生这种情况:
[2, 0, 0, 0, 0]
然后像以前一样填充下一个元素,除了包含该组的第一个位置:
[2, 1, 0, 0, 0]
[2, 1, 1, 0, 0]
[2, 1, 1, 1, 0]
[2, 1, 1, 1, 1]
然后下一步应该是:
[2, 2, 0, 0, 0] 等
我希望我清楚自己在寻找什么。有这方面的算法吗?我搜索了一下,一无所获。有人可以为此创建算法吗?
我的作业在星期天到期,如果你能帮我找到解决问题的办法,我将不胜感激。
第一步是寻找最小元素,如果重复我们取第一个。然后我们将它递增,最小元素之后的所有元素都变为 0.
public static void main(String[] args) {
int[] arr = new int[]{0, 0, 0, 0, 0};
for (int i = 0; i < 15; i++) {
next(arr);
System.out.println(Arrays.toString(arr));
}
}
static void next(int[] arr) {
int idx = 0; //index of min element
for (int i = 0; i < arr.length; i++) {
if (arr[idx] > arr[i]) {
idx = i;
}
}
Arrays.fill(arr, idx + 1, arr.length, 0);
arr[idx]++;
}
添加15个元素后:
[1, 0, 0, 0, 0]
[1, 1, 0, 0, 0]
[1, 1, 1, 0, 0]
[1, 1, 1, 1, 0]
[1, 1, 1, 1, 1]
[2, 0, 0, 0, 0]
[2, 1, 0, 0, 0]
[2, 1, 1, 0, 0]
[2, 1, 1, 1, 0]
[2, 1, 1, 1, 1]
[2, 2, 0, 0, 0]
[2, 2, 1, 0, 0]
[2, 2, 1, 1, 0]
[2, 2, 1, 1, 1]
[2, 2, 2, 0, 0]
我正在尝试找出一种方法,通过将 n 个元素一个一个地相加来填充一个 int 数组。当阵列的每个点都被填满时,我希望它们在第一个可能的位置分组并重新开始。
例如:
[0, 0, 0, 0, 0]
数组看起来是空的。
如果我想添加 2 个元素,它应该如下所示:
[1, 1, 0, 0, 0]
5 个元素看起来像这样:
[1, 1, 1, 1, 1]
到目前为止,还不错。现在,在添加第六个元素时,我希望发生这种情况:
[2, 0, 0, 0, 0]
然后像以前一样填充下一个元素,除了包含该组的第一个位置:
[2, 1, 0, 0, 0]
[2, 1, 1, 0, 0]
[2, 1, 1, 1, 0]
[2, 1, 1, 1, 1]
然后下一步应该是:
[2, 2, 0, 0, 0] 等
我希望我清楚自己在寻找什么。有这方面的算法吗?我搜索了一下,一无所获。有人可以为此创建算法吗?
我的作业在星期天到期,如果你能帮我找到解决问题的办法,我将不胜感激。
第一步是寻找最小元素,如果重复我们取第一个。然后我们将它递增,最小元素之后的所有元素都变为 0.
public static void main(String[] args) {
int[] arr = new int[]{0, 0, 0, 0, 0};
for (int i = 0; i < 15; i++) {
next(arr);
System.out.println(Arrays.toString(arr));
}
}
static void next(int[] arr) {
int idx = 0; //index of min element
for (int i = 0; i < arr.length; i++) {
if (arr[idx] > arr[i]) {
idx = i;
}
}
Arrays.fill(arr, idx + 1, arr.length, 0);
arr[idx]++;
}
添加15个元素后:
[1, 0, 0, 0, 0]
[1, 1, 0, 0, 0]
[1, 1, 1, 0, 0]
[1, 1, 1, 1, 0]
[1, 1, 1, 1, 1]
[2, 0, 0, 0, 0]
[2, 1, 0, 0, 0]
[2, 1, 1, 0, 0]
[2, 1, 1, 1, 0]
[2, 1, 1, 1, 1]
[2, 2, 0, 0, 0]
[2, 2, 1, 0, 0]
[2, 2, 1, 1, 0]
[2, 2, 1, 1, 1]
[2, 2, 2, 0, 0]