Java комбинированный алгоритм - PullRequest
4 голосов
/ 27 июля 2010

Учитывая набор целых чисел, что такое алгоритм Java, который будет давать комбинации следующим образом ...

Учитывая пример коллекции: [1,3,5], мы бы хотели получить вывод:

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

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

Обратите внимание, что порядок не важен, поэтому нам нужен один из [1-3], [3-1], но не оба.

Это должно работать с набором из n чисел, а не только с тремя числами, как в этом примере.

Ответы [ 3 ]

5 голосов
/ 27 июля 2010

Ниже функция должна сделать это

  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);
2 голосов
/ 27 июля 2010

Звучит как домашнее задание ... но здесь оно все равно.Очевидно, что вы можете обойтись без 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());
    }
}
0 голосов
/ 27 июля 2010

Вот логика, которую вы хотите.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...