Java组合算法

时间:2010-07-27 17:33:09

标签: java algorithm permutation

给定一个整数集合,什么是Java算法,它将给出如下组合..

鉴于示例集合:[1,3,5],我们需要输出:

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

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

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

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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());
    }
}

答案 2 :(得分: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;
}