gpt4 book ai didi

java - java中如何查找数组的子数组

转载 作者:行者123 更新时间:2023-12-02 12:53:01 26 4
gpt4 key购买 nike

这是我编写的一个程序,用于打印给定数组的所有可能的子数组,但是逻辑上存在一些问题,并且打印了错误的输出。

有什么算法可以实现这个吗?

public class SubArray {
static int[][] subArrs;
static int count = 0;

public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
int N = 8;

subArrs = new int[N][];
subArrs[0] = new int[10];

for (int i = 0; i < arr.length; i++) {
subArrs[i] = new int[1];
subArrs[i][0] = arr[i];
}

count = arr.length;
for (int i = 0; i < arr.length; i++) {
sub(arr, i, i);
}

for (int i = 0; i < subArrs.length; i++) {
System.out.print("[ ");
for (int j = 0; j < subArrs[i].length; j++) {
System.out.print(" " + subArrs[i][j]);
}
System.out.println(" ]");
}
}

这是一种计算具有超过 1 个元素的子数组的方法。

static void sub(int arr[], int i, int index) {
for (int j = i + 1; j < arr.length; j++) {

while (index <= j) {
subArrs[count] = new int[j + 1];
subArrs[count][0] = arr[i];

for (int k = 1; k < (j + 1); k++) {
subArrs[count][k] = arr[k];
}
count++;
index++;
}
}

}
}

我得到的输出

[   1 ]
[ 2 ]
[ 3 ]
[ 1 2 ]
[ 1 2 ]
[ 1 2 3 ]
[ 2 2 3 ]
[ 2 2 3 ]

期望的输出

[   1 ]
[ 2 ]
[ 3 ]
[ 1 2 ]
[ 1 3 ]
[ 2 3 ]
[ 1 2 3 ]

最佳答案

试试这个代码:

for (int i = 0; i < yourArray.length; i++)
{
// j is the number of elements which should be printed
for (int j = i; j < yourArray.length; j++)
{
// print the array from i to j
for (int k = i; k <= j; k++)
{
System.out.print(yourArray[k]);
}
System.out.println();
}
}

关于java - java中如何查找数组的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44534906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com