簡體   English   中英

如何在java中打印具有特定長度的數組的子集

[英]how to print subsets of an array with a specific length in java

我想用數組長度 n 和子集長度 k 打印數組的子集。 例如,您有 {1,2,3} 並且您必須在不同的行中分別打印 {1,2} {1,3} {2,3} 並進行排序。(另外您必須先打印 {1,2} {1,3}) 我在網上搜索,但他們使用的是不允許的數組列表。 如果有人請幫助解決這個問題,我很感激。

在 main 中,我們對數組進行排序並調用名為 loopy_loop 的遞歸方法。 如果這對您來說是一個新標准,您也可以在這里要求自定義排序。

public static void main(String[] args) {
    int[] source = {0,8,2,3,1,9,5,6,4,7};
    int k = 3, n = 10;
    int[] destination = new int[k];

    // first the sorting
    Arrays.sort(source);


    for (int i = 0; i < n; i++)
        System.out.print(source[i] + " ");
    System.out.println();

    if (k > 0)
        loopy_loop(source, destination, 0, 0);

}

這是一個遞歸函數。 級別遵循 (int)k 的值,並確定要在目標 [] 中填充的位置以及遞歸的“深度”。

public static void loopy_loop(int[] source, int[] destination, int level, int startIndex) {

    for (int i = startIndex; i < source.length - destination.length + level + 1; i++) {
        destination[level] = source[i];
        if (level == destination.length - 1)
        {
            String rez = String.valueOf(destination[0]);
            for (int j = 1; j < destination.length; j++)
                rez += ", " + destination[j];
            System.out.println("{"+ rez +"}");
        }
        else
            loopy_loop(source, destination, level + 1, i + 1);
    }

}

暫無
暫無

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

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