簡體   English   中英

返回類似數組的所有子序列,僅使用Java中的連續值

[英]Return all subsequences of an array-like with only consecutive values in Java

我試圖在Java中解決的問題需要將輸入數組划分為所有允許的子序列,其中允許的子序列僅包含連續值。 例如,我希望{A,E,D}返回{A,E,D},{A,E},{A},{E,D},{D},{E}

這與此問題的不同之處(上例)
1)我有'連續值'規則,表示不允許{A,D}
2)我不能在這里的答案中依賴Python語法。

特別是,我的問題是如何將“連續值”規則應用於更一般的子序列問題。

到目前為止,我已經為示例{1,2,3}提出了一種算法:
1.復制{1,2,3}並存儲在arr
2.將{1,2,3}添加到溶液中,剝離3
3.將{1,2}附加到溶液中,剝離2
4.將{1}附加到解決方案。 arr切1
5.將{2,3}附加到溶液中剝離3
6.將{2}附加到解決方案。 arr切2
7.將{3}附加到解決方案

您應該能夠簡單地使用兩個嵌套的for循環,如下所示:

// Setup
char[] arr = { 'A', 'E', 'D' };

// Generate all subsequences
List<char[]> result = new ArrayList<>();
for (int start = 0; start < arr.length; start++) {
    for (int end = start + 1; end <= arr.length; end++) {
        result.add(Arrays.copyOfRange(arr, start, end));
    }
}

// Print result
result.forEach(a -> System.out.println(Arrays.toString(a)));

輸出:

[A]
[A, E]
[A, E, D]
[E]
[E, D]
[D]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM