给定一个整数集合,什么是Java算法,它将给出如下组合..
鉴于示例集合:[1,3,5],我们需要输出:
[1-1]
[3-3]
[5-5]
[1-3]
[1-5]
[3-5]
请注意,排序并不重要,因此我们需要[1-3],[3-1]中的一个,但不是两个。
这应该适用于n个数字的集合,而不仅仅是这个例子中的三个数字。
答案 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;
}