這是一個程序,用於打印給定數組的所有可能的子數組,但邏輯中存在一些問題,並且它打印的是錯誤的輸出。如何在java中查找數組的子數組
是否有任何算法來實現?
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 ]
這是一個家庭作業的問題? – Chloe
不..只是想.. –
您可以訪問此鏈接作爲參考http://www.geeksforgeeks.org/subarraysubstring-vs-subsequence-and-programs-to-generate-them/ –