Я буду благодарен за любую помощь по следующей проблеме. У меня есть n целых чисел от 0 до n-1, и я пытаюсь сгенерировать список всех возможных комбинаций длины k (например, k конкатенированных целых чисел), так что каждая пара последовательных целых чисел не равна. Так, например, (1) (2) (3) (2) было бы справедливо при k = 4, но (1) (2) (3) (3) было бы неверным. Любые идеи о том, как подойти к этому наиболее эффективно? (Я не слишком заботится о длине/степени сложности кода, только КПД)Сочетания целых чисел
-2
A
ответ
3
Это код:
void Generate(int[] source, List<int[]> result, int[] build, int k, int num) {
if (num == k) {
int[] a = (int[])build.clone();
result.add(a);
return;
}
for (int i = 0; i < source.length; i++)
if (num == 0 || source[i] != build[num - 1])
{
build[num] = source[i];
Generate(source, result, build, k, num + 1);
}
}
Как звонить:
int k = 2;
List<int[]> a = new ArrayList<int[]>();
Generate(new int[]{1,2,3}, a, new int[k], k, 0);
0
public static void recursiveOutput(Integer n, int k, int limit, String prints){
k++;
if(k>limit)
return;
String statePrints = prints;
//cycle through all available numbers
for(Integer i = 1; i<=n; i++)
{
statePrints = prints;
//First cycle
if(k==1){
statePrints+= "(" + i.toString() + ")";
recursiveOutput(n, k, limit, statePrints);
}
//check if predecessor is not the same
if(i != Integer.parseInt(statePrints.substring(statePrints.length()-2,statePrints.length()-1))){
statePrints += "(" + i.toString() + ")";
recursiveOutput(n, k, limit, statePrints);
}
}
//Check if the length matches the combination length
if(statePrints.length() == 3 * limit)
System.out.println(statePrints);
}
звонок: recursiveOutput(3,0,4,"");
0
public class Generator {
final int k = 2;
final char[] n = new char[]{'0','1','2','3','4','5','6','7','8','9'};
final char[] text = new char[k];
public void gen(int i, int not_n) {
if(i == k) {
System.out.println(text);
return;
}
for(int j = 0; j < n.length; j++) {
if(j == not_n) continue;
text[i] = n[j];
gen(i+1, j);
}
}
public static void main(String[] args) {
new Generator().gen(0, -1);
}
}
Смежные вопросы
- 1. подсчет целых целых чисел
- 2. Массив целых чисел Сравнение целых чисел VB.NET
- 3. указатель на массив целых чисел и обычный массив целых чисел
- 4. Linq пересекает дочерний список целых чисел по списку целых чисел
- 5. Преобразование строки целых чисел от входа в массив целых чисел
- 6. Отличие больших целых чисел от близких целых чисел в python
- 7. Обратная строка целых чисел, не меняя самих целых чисел
- 8. минимизировать отклонение k целых чисел от n упорядоченных целых чисел
- 9. Как найти повторяющуюся последовательность целых чисел в массиве целых чисел?
- 10. Сканирование нескольких целых чисел, не зная фактическое количество целых чисел
- 11. уменьшить список целых чисел/диапазон целых чисел в scala
- 12. Как превратить текстовую строку целых чисел в массив целых чисел?
- 13. Подсчет списка целых чисел в списки одинаковых целых чисел
- 14. Регулярное выражение для целых чисел и целых чисел?
- 15. BPEL: скопировать массив целых чисел в другой массив целых чисел
- 16. Как реализовать массив целых чисел для больших целых чисел?
- 17. Разделительный набор целых чисел
- 18. Инициализировать массив целых чисел
- 19. шифрованного набора целых чисел
- 20. Python: Список целых чисел
- 21. Объединение целых чисел
- 22. Свойство массива целых чисел
- 23. Сортировка целых чисел
- 24. Биологическое отображение целых чисел
- 25. Добавление целых чисел
- 26. Максимальная сумма целых чисел
- 27. минимум целых чисел
- 28. Экспоненциального целых чисел
- 29. Сериализация параллельных целых чисел
- 30. Алгоритм суммы целых чисел
@A. Р. С .: То, что Луи Вассерман, вероятно, имел в виду: «что ты пробовал»: покажи нам код (и расскажи нам, что не работает конкретно). – ChristopheD
На самом деле это больше похоже на то, что он пытается переборщить шаблон разблокировки. – maybeWeCouldStealAVan