Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2012, 19:33   #1
Amet13
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию Генерация перестановок java

Добрый день, у меня задача генерировать перестановки.
Конечно же я взялся выполнять работу полным перебором.
Вот что получилось:
Код:
import java.util.*;
public class Perms { //permissions - перестановки
    private int[][] perms; //массив перестановок
    private int[] p; //следующая перестановка
    private int n;
    private int k;
    public Perms(int[] s) { //конструктор
    	n = s.length;
    	perms = new int[fact(n)][n];
    	p = Arrays.copyOf(s, n);
    	k = 0;
    	antilex(n-1);
    }
    public int[][] getPerms() {
    	return perms;
    }
    public void antilex(int m) { //заполняем массив перестановками
    	if(m == 0) 
    	    perms[k++] = Arrays.copyOf(p, n);
    	else {
    	    for(int i = 0; i <= m; i++) {
        		antilex(m-1);
        		if(i < m) {
        		    swap(i, m);
        		    reverse(m-1);
        		}
    	    }
    	}
    }
    public void swap(int a, int b) { //меняет местами требования
    	int t = p[a];
    	p[a] = p[b];
    	p[b] = t;
    }
    public void reverse(int m) { //реверс вектора
    	int i = 0;
    	int j = m;
    	while(i < j) {
    	    swap(i, j);
    	    i++;
    	    j--;
    	}
    }
    public static int fact(int n) {//подсчет факториала
    	int res = 1;
    	for(int i = 1; i <= n; i++) 
    	    res *= i;
    	return res;
    }
}
Код прост. Хотелось бы узнать какими алгоритмами еще можно реализовать подобный код, про генетический алгоритм ничего не понятно.
Подскажите пожалуйста.
Amet13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация всех перестановок элементов массива в С++. bender91 Помощь студентам 4 19.04.2012 14:14
Генерация всех перестановок массива aly-lucenko Помощь студентам 4 28.04.2011 14:14
Генерация всех перестановок 10-элементного множества aly-lucenko Помощь студентам 0 17.04.2011 20:04
Генерация перестановок vereney Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2011 21:04
Прога - Генерация перестановок DED_moroZ Помощь студентам 0 04.03.2010 15:37