首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java组合算法

Java组合算法
EN

Stack Overflow用户
提问于 2010-07-28 01:33:09
回答 3查看 8.6K关注 0票数 5

给定一个整数集合,什么是给出如下组合的Java算法。

给定示例集合: 1,3,5,我们需要输出:

代码语言:javascript
运行
复制
[1-1]
[3-3]
[5-5]

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-28 01:44:06

下面的函数应该做到这一点

代码语言:javascript
运行
复制
  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] +"]");
      }
    }
  }

此函数的示例调用

代码语言:javascript
运行
复制
int[] numbers={1,2,3};
printPermutations(numbers);
票数 6
EN

Stack Overflow用户

发布于 2010-07-28 01:48:27

听起来像是homework...but,不管怎么说。显然,你可以不使用ArrayList,等等--只是快速和肮脏。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2010-07-28 01:41:45

这是你想要的逻辑。

代码语言:javascript
运行
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3346249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档