С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 24.05.2018
Сообщений: 38

Цикл для всех возможных расстановок

11.02.2019, 11:04. Показов 1022. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Задача из области комбинаторики. Подскажите, пожалуйста, как написать цикл, который будет перебирать все возможные варианты размещений n-количества объектов? Допустим, все объекты пронумерованы и размещены в ряд друг за другом. Само количество я рассчитать могу, нужно понять, как все эти варианты перебрать в цикле. Например,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
        int numberOfObj = 12;
        for (long i = 0; i < factorial(numberOfObj); i++) {
         // Переборка вариантов размещения
        }
    }
 
    public static long factorial(int n) {
        if (n == 0) {
            return 1;
        }
        return n * factorial(n - 1);
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2019, 11:04
Ответы с готовыми решениями:

Цикл для проверки подходящего ключа и вывода всех возможных вариантов
привет всем...кто может помочь, задание такое...caesar cipher (метод шифрования текста)...есть зашифрованный текст, нужно вывести все...

Генерация списка всех возможных расстановок максимального количества ладей на доске N x N клеток
Добрый вечер, я в хаскелле новичок помогите пожалуйста решить задачу о расстановке ладьей на шахматной доске. Для кого-то может быть...

Рекурсия: количество возможных расстановок скобок в произведении n чисел
Написать на языке С рекурсивную функцию вычисляющую количество полных расстановок скобок в произведении n чисел

6
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
11.02.2019, 11:45
как-то так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Help {
    public static int i = 0;
    private static String s;
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        i = 10;
        for(int a = 0; a < i; a++){
            s = "" + a;
            for(int b = 0; b < i; b++){             
                if( b != a){
                    s += b;
                    getNext();
                    s ="" + a;
                }
            }
        }
        
    }
 
    private static void getNext() {
        for(int ii = 0; ii < i; ii++){
            Pattern p = Pattern.compile("" + ii);
            Matcher m = p.matcher(s);
            if(!m.find()){
                s += ii;
                if(s.length() < i){
                    getNext();
                }
                else{
                    System.out.println(s);
                }
            }         
        }
    }
    
}
результат
run

0123456789
0213456789
0312456789
0412356789
0512346789
0612345789
0712345689
0812345679
0912345678
1023456789
1203456789
1302456789
1402356789
1502346789
1602345789
1702345689
1802345679
1902345678
2013456789
2103456789
2301456789
2401356789
2501346789
2601345789
2701345689
2801345679
2901345678
3012456789
3102456789
3201456789
3401256789
3501246789
3601245789
3701245689
3801245679
3901245678
4012356789
4102356789
4201356789
4301256789
4501236789
4601235789
4701235689
4801235679
4901235678
5012346789
5102346789
5201346789
5301246789
5401236789
5601234789
5701234689
5801234679
5901234678
6012345789
6102345789
6201345789
6301245789
6401235789
6501234789
6701234589
6801234579
6901234578
7012345689
7102345689
7201345689
7301245689
7401235689
7501234689
7601234589
7801234569
7901234568
8012345679
8102345679
8201345679
8301245679
8401235679
8501234679
8601234579
8701234569
8901234567
9012345678
9102345678
9201345678
9301245678
9401235678
9501234678
9601234578
9701234568
9801234567
BUILD SUCCESSFUL (total time: 0 seconds)


Добавлено через 1 минуту
а дальше напильником
1
1 / 1 / 1
Регистрация: 24.05.2018
Сообщений: 38
11.02.2019, 12:01  [ТС]
Благодарю за ответ, но не совсем тот результат получается. Для 10 объектов всего 3 628 800 вариантов размещения. Соответственно, для первого члена будет 362 880 вариантов. У вас поочередно переставляются объекты, а между собой не меняются. Например, так: 0123456789, 0123456798, 0123456978, 0132456987 и тд.
0
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
11.02.2019, 13:03
Тогда попробуйте вот-так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Help {
    public static int i = 0;
    private static String s;
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        i = 10;
        for(int a = 0; a < i; a++){
            s = "" + a;
            for(int b = 0; b < i; b++){   
                if(b != a){
                    s += b;
                }
            }
            inversion(s);
        }
        
    }
 
    private static void inversion(String s) {
        System.out.println(s);
        char[] c = s.toCharArray();
        int b = 0;
        int e = 1;
        
        while(b != -1){
            String st = "";
            for(int ii = 0; ii < c.length; ii++){
                if(ii == b){
                    st += c[e];
                }
                else if(ii == e){
                    st += c[b];
                }
                else{
                    st += c[ii];
                }
            }
            System.out.println(st);
            e++;
            if(e == i){
                b++;
                e = 0;
                if(b == i){
                    b = -1;
                }
            }
        }
    }
    
}
результат увидете сами в своем ИДЕ, слишком много строк, админы забанят если выложу сюда
1
1 / 1 / 1
Регистрация: 24.05.2018
Сообщений: 38
11.02.2019, 13:20  [ТС]
Благодарю, буду разбираться.
0
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
11.02.2019, 13:30
незачто
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
11.02.2019, 17:31
Цитата Сообщение от Star_Saber Посмотреть сообщение
Благодарю
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2019, 17:31
Помогаю со студенческими работами здесь

Цикл: Вычислить значение выражения y = (x ^ 2) / 8 * x с использованием всех возможных операторов цикла
Написать в C# цикл с использованием всех возможных операторов цикла для вычисления значений y=(x^2)/8*x, если х принадлежит диапазону...

Расчет теоретических значений для всех возможных линий тренда
:umnik:Определить количество обработанных деталей, которое можно выполнить заданным инструментом до его замены по причине износа, если...

Нахождение всех возможных путей для спуска с вершины матрицы
имеется массив вида 1 2 х х 3 4 5 х 6 7 8 9 высота массива = 3 количество вершин = 2 более...

Разработайте алгоритм для вывода всех возможных перестановок символов в строке
Разработайте алгоритм для вывода всех возможных перестановок символов в строке (считайте, что все символы используются только один раз).

Брутфорс (вывод всех возможных значений строки для заданного алфавита)
Доброго времени суток! У меня имеется брутфорс и он вроде как даже рабочий, но возникла необходимость вывода сформированных паролей. И тут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru