2010-07-27 64 views
4

鉴于整数的集合,什么是Java的算法,将如下给出的组合..Java的组合算法

给出的例子集合:[1,3,5],我们会想输出:

[1-1] 
[3-3] 
[5-5] 

[1-3] 
[1-5] 
[3-5] 

请注意,排序并不重要,所以我们想要[1-3],[3-1]中的一个,但不是两个。

这应该与n个数字的集合,而不仅仅是这个例子中的三个数字。

回答

5

下面的功能应该这样做

private void printPermutations(int[] numbers) { 
    for(int i=0;i<numbers.length; i++) { 
     for (int j=i; j<numbers.length; j++) { 
     System.out.println("[" + numbers[i] + "-"+ numbers[j] +"]"); 
     } 
    } 
    } 

实例调用该函数

int[] numbers={1,2,3}; 
printPermutations(numbers); 
0

这是您想要的逻辑。

function subsequences (arr) { 
    arr.sort(); 
    var subseqs = []; 
    for (var i = 0; i < arr.length; ++i) { 
    for (var j = i; j < arr.length; ++j) { 
     subseqs.push ("" + arr [i] + "-" + arr [j]); 
    } 
    } 
    return subseqs; 
} 
2

听起来像功课......但在这里它是无论如何。显然,你可以在没有ArrayList的情况下执行 - 只需要快速和肮脏。

import java.util.ArrayList; 

public class Test { 

public static void main(String[] args) { 
    int[] input = {1, 3, 5}; 
    ArrayList<String> output = new ArrayList<String>(); 
    int n = input.length; 

    for (int left = 0; left < n; left++) { 
     output.add("["+input[left]+"-"+input[left]+"]"); 
     for (int right = left + 1; right < n; right++) { 
      output.add("["+input[left]+"-"+input[right]+"]"); 
     } 
    } 

     System.out.println(output.toString()); 
    } 
}