С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/75: Рейтинг темы: голосов - 75, средняя оценка - 4.85
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462

Получение всех комбинаций элементов массива

27.07.2018, 09:43. Показов 14817. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Время от времени возникает необходимость получить все комбинации элементов, какого либо набора.
Вот, пришло на ум, как относительно просто это сделать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
        char [] strBox = {'a','b','c','d'};
        for (int i = 0; i < strBox.length; i++)
            for (int j = 0; j < strBox.length; j++) {
                if (j != i)
                    for (int k = 0;k < strBox.length; k++) {
                        if (k != i && k != j)
                            for (int l = 0; l < strBox.length; l++) {
                                if (l != i && l != j && l != k)
                                    System.out.printf("%s %s %s %s%n", strBox[i], strBox[j], strBox[k], strBox[l]);
                            }
                    }
            }
    }
1
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.07.2018, 09:43
Ответы с готовыми решениями:

Генерация всех возможных комбинаций из элементов массива
Всем привет, совсем недавно зарегистрировался на форуме, начал потихоньку изучать Pascal ABC, поэтому прошу помочь мне с написанием кода. ...

Перебор всех комбинаций элементов массива в нескольких одномерных массивов
Всем привет! Парни, возникла задачка. Подскажите, как можно перебрать и вывести в текст контрол все возможные варианты комбинаций из трех...

Получение всевозможных комбинаций массива
необходимо получить всевозможные комбинации массива Исх. массив : 1,2,3 Комбинации : 1,2,3; 1,3,2; 2,1,3 и т.д.

30
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
27.07.2018, 09:53

Не по теме:

эх, забыл я термин для таких глубоких лесенок, лестница смерти чтоли...



Aviz__, а если клиент-супостат попросит 8 элементов покомбинировать?
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
27.07.2018, 10:16  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
если клиент
спору нет))
1
27.07.2018, 10:17

Не по теме:

тогда зачот! :good:

0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
27.07.2018, 23:18
Лучший ответ Сообщение было отмечено Aviz__ как решение

Решение

Как вариант для клиента-супостата.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String[] args) {
        char[] strBox = {'a', 'b', 'c', 'd'};
        Deque<Integer> indexes = new LinkedList<>();
        make(strBox, indexes, 4);
    }
 
    static void make(char[] arr, Deque<Integer> indexes, int expectedSize) {
        if (indexes.size() == expectedSize) {
            for (Integer i : indexes) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            if (!indexes.contains(i)) {
                indexes.addLast(i);
                make(arr, indexes, expectedSize);
                indexes.removeLast();
            }
        }
    }
2
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
28.07.2018, 19:23
Это моя реализация, коряво наверно ) но работает и тоже под любой массив универсальный
Кликните здесь для просмотра всего текста
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/**
 * реализовал на основе итератора, только следующая итерация будет выдавать новый массив позицый
 * также будет хранить список с объектами Combo у каждой позиции своё значение и свой флаг
 */
 
import java.util.*;
 
public class CombiIterator implements Iterator<int[]> {
 
    private final Combo[] comboNext;  // будет содержать   следующую комбинацию
    private int[] comboLast; // будет содержать последнюю отправленную комбинацию
    private int[] isHashNextList; //содержит финальную возможную комбинацию
    private boolean ishashnext = true;
 
    CombiIterator(int[] list) {
        comboNext = new Combo[list.length];
        comboLast = new int[list.length];
        isHashNextList = new int[list.length];
        isHashlistNexstReload();
    }
 
    private void isHashlistNexstReload() {
        for (int i = comboNext.length - 1, j = 0; i >= 0; j++, i--) {
            comboNext[i] = new Combo(i);
            isHashNextList[j] = i;
        }
    }
 
    /**
     * метод проверяет есть ли следущий элемент
     * @return
     */
    @Override
    public boolean hasNext() {
        return ishashnext;
    }
 
 
    @Override
    public int[] next() {
        boolean exit = false;
        boolean flagRevers = false;
        if (!hasNext()) {
            throw new NoSuchElementException();
        } else {
            for (int i = 0; i < comboNext.length; i++) {
                comboLast[i] = comboNext[i].getValue();
            }
            int n = comboNext.length - 1;
            for (int i = 0; i < comboLast.length; i++) {
                if (isHashNextList[i] == comboLast[i]) {
                    ishashnext = false;
                } else {
                    ishashnext = true;
                    break;
                }
            }
            while (!exit && ishashnext) {
                if (comboNext[n].getValue() < comboNext.length - 1) {
                    if (!flagRevers) {
                        comboNext[n].incrementValue();
                    } else {
                        n++;
                        flagRevers = false;
                    }
                } else {
                    if (!flagRevers) {
                        comboNext[n].zeroValue();
                        n--;
                        comboNext[n].setFlag(false);
                        continue;
                    } else {
                        n++;
                        flagRevers = false;
                    }
                }
                if (!comboNext[n].isFlag()) {
                    for (int i = 0; i < n; i++) {
                        if (comboNext[i].getValue() == comboNext[n].getValue()) {
                            comboNext[n].setFlag(false);
                            break;
                        } else {
                            comboNext[n].setFlag(true);
                        }
                    }
                }
                if (comboNext[n].isFlag() || n == 0) {
                    flagRevers = true;
                    comboNext[n].setFlag(true);
                }
                if (comboNext[n].isFlag() && n >= comboNext.length - 1) {
                    exit = true;
                }
            }
        }
        return comboLast;
    }
 
    private void nextComboGeneration() {
 
    }
}
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
import java.util.*;
/**
 * содержит готовую базу различных комбинаций массива после срабатывания конструктора
 * 
 */
public class Combin {
    private ArrayList<char[]> rsl = new ArrayList<char[]>();
    public ArrayList<char[]> getRsl() {
        return rsl;
    }
 
    public Combin(char[] strBox) {
        this.comBinator(strBox);
    }
    private void comBinator(char[] strBox) {
        HashMap<Integer, Integer> maptest = new HashMap<>();
        int maks = (int) Math.pow(strBox.length, strBox.length);
        int[] n = new int[strBox.length];
        for (int i = 0; i < strBox.length; i++) {
            n[i] = i;
        }
        Iterator<int[]> combi = new CombiIterator(n);
        while (combi.hasNext()) {
            n = combi.next();
            rsl.add(new char[strBox.length]);
            for (int i = 0; i < strBox.length; i++) {
                rsl.get(rsl.size() - 1)[i] = strBox[n[i]];
            }
        }
    }
}
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
/**
 * Класс Будет содержать в себе value - позицию элемента
 * и флаг, флаг будет означать что перед элементом отсутствуютобъекты с такими же значениями value
 * при добавлении в список естественно значения все будут отличаться, по этому флаг будет true
 */
public class Combo {
 
    private int value;
    private boolean flag;
 
    Combo(int value) {
        this.value = value;
        flag = true;
    }
 
    public int getValue() {
        return value;
    }
 
    public boolean isFlag() {
        return flag;
    }
 
    public void setFlag(boolean flag) {
        this.flag = flag;
    }
 
    public void incrementValue() {
        this.value++;
        this.flag = false;
    }
 
    public void zeroValue() {
        this.value = 0;
        this.flag = false;
    }
 
}

Кликните здесь для просмотра всего текста
a b c d f
a b c f d
a b d c f
a b d f c
a b f c d
a b f d c
a c b d f
a c b f d
a c d b f
a c d f b
a c f b d
a c f d b
a d b c f
a d b f c
a d c b f
a d c f b
a d f b c
a d f c b
a f b c d
a f b d c
a f c b d
a f c d b
a f d b c
a f d c b
b a c d f
b a c f d
b a d c f
b a d f c
b a f c d
b a f d c
b c a d f
b c a f d
b c d a f
b c d f a
b c f a d
b c f d a
b d a c f
b d a f c
b d c a f
b d c f a
b d f a c
b d f c a
b f a c d
b f a d c
b f c a d
b f c d a
b f d a c
b f d c a
c a b d f
c a b f d
c a d b f
c a d f b
c a f b d
c a f d b
c b a d f
c b a f d
c b d a f
c b d f a
c b f a d
c b f d a
c d a b f
c d a f b
c d b a f
c d b f a
c d f a b
c d f b a
c f a b d
c f a d b
c f b a d
c f b d a
c f d a b
c f d b a
d a b c f
d a b f c
d a c b f
d a c f b
d a f b c
d a f c b
d b a c f
d b a f c
d b c a f
d b c f a
d b f a c
d b f c a
d c a b f
d c a f b
d c b a f
d c b f a
d c f a b
d c f b a
d f a b c
d f a c b
d f b a c
d f b c a
d f c a b
d f c b a
f a b c d
f a b d c
f a c b d
f a c d b
f a d b c
f a d c b
f b a c d
f b a d c
f b c a d
f b c d a
f b d a c
f b d c a
f c a b d
f c a d b
f c b a d
f c b d a
f c d a b
f c d b a
f d a b c
f d a c b
f d b a c
f d b c a
f d c a b
f d c b a
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
28.07.2018, 21:40
WinniPuh, Combin, Combo, comBinator - с именами проблема.
Глядя на код без объяснений даже не знаю сколько времени надо, чтоб понять что там происходит.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
29.07.2018, 11:02
Я согласен с вашими замечаниями.

Добавлено через 5 часов 20 минут
вообщем в итераторе я организовал чтобы в бесконечном цикле ходить по массиву искать следующуюю итерацию а один из классов содержит базу готовых комбинаци элементов, у вас то конечно круче, я тоже думал про очередь но ума не хватило, вы двигатесь по очереде и уаляете последнй элемент и ищите следующую комбинацию, как-то подобное делал когда оргинизовывал итерацию дерева.
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
29.07.2018, 11:29  [ТС]
WinniPuh, Алгоритм Джонсона-Троттера, имхо, этот красивее и тащить в каждую итерацию ничего не нужно.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
29.07.2018, 11:39
только у меня вопрос у меня в голове не укладывается как срабатывает строчка
indexes.removeLast();
Java
1
2
3
4
5
6
7
for (int i = 0; i < arr.length; i++) {
                if (!indexes.contains(i)) {
                    indexes.addLast(i);
                    make(arr, indexes, expectedSize);
                    indexes.removeLast();
                }
            }
если мы посмотрим на это то блок сработает только если индекс не содержится в списке индексов, и кога у нас цикл заканчивается, я прям по дебагеру прошёлся - курсор выходит из цикла , а потом заходит в цикл и удаляет последний индекс - что его заставило это сделать я чегот не понимаю, и после цикл начинается заново и ещё вопрос для чего вам return?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
30.07.2018, 11:01
Цитата Сообщение от WinniPuh Посмотреть сообщение
что его заставило это сделать
Рекурсия ж. Метод make вызывает сам себя. При дебаге смотрите внимательно на стек вызовов.
Цитата Сообщение от WinniPuh Посмотреть сообщение
чего вам return?
Когда достигли нужного размера, чтоб выйти из последнего make и вернутся к предыдущему шагу (и тут как раз будет удаляться последний индекс).
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
30.07.2018, 16:35
https://ibb.co/eWjQpT скриншёт 1
https://ibb.co/jB9x3o скриншёт 2
вот какого он обратно лезет в этот блок?
и на скринах вино что оба цикла завершены и всёравно потом заходит команда делете ласт почему она туда заходит
и ещё я закоментил return и всравно всё прекрасно работает. есть тут те кто может ответить на вопрос:
1.КАК??? КАК СРОБАТЫВАЕТ КОМАНДА indexes.removeLast(); ЕСЛИ ОНА НАХОДИТСЯ В БЛОКЕ if (!indexes.contains(i)) , КОТОРЫЙ В СВОЮ ОЧЕРЕДЬ НАХОДИТСЯ В БЛОКЕ ЦИКЛА КОТОРЫЙ УЖЕ ЗАВЕРШИЛСЯ?
2. НА КОЙ НАМ НУЖЕН RETURN Я ЕГО ЗАКОМЕНТИЛ ВСЁРАВНО ВСЁ ИСПРАВНО РАБОТАЕТ, ЕСЛИ ЭТО ПРОСТО ОЧИПЯТКА АФФТОРА ТО ТАК И СКАЖИТЕ А ТО ОНО НА ТО И ПОХОЖЕ
3. КАК? КАК ПРОВЕРЯЕТСЯ УСЛОВИЕ ОСТАНОВКИ ВСЕГО ЭТОГО КАКИЕ ЗВЁЗДЫ СХОДЯТСЯ ЧТОБЫ ЦИКЛЫ ОСТАНОВИЛИСЬ Я ПОНЯТЬ НЕ МОГУ.

это не моя вредность, просто реально это как - то странно работает но оно работает и я хочу понять как???
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
30.07.2018, 16:44
WinniPuh, Вы знаете что такое рекурсия?
На скринах слева внизу показан стек вызовов (Frames). Видите отличие в [5]?
Работает это как вызвали make, если длина меньше желаемой, то из make вызвыли make. Если длина меньше желаемой, то из make->make вызвали еще одни make. Если длина равна желаемой, то возвращаемся назад (в make->make).
Цитата Сообщение от WinniPuh Посмотреть сообщение
ВСЁРАВНО ВСЁ ИСПРАВНО РАБОТАЕТ
Это мнимый эфект. Так как вывод на экран только при условии indexes.size() == expectedSize. При закомментированом return будет намного больше операций.

Добавьте первой строкой в make
Java
1
System.out.println(indexes.size());
и сравните вывод с/без return.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
30.07.2018, 17:02
я это понял что если длинна меньше желаемой. то в консоль ничего не выводит сама рекурсия у тебя срабатывает кога ты говоришь
make(arr, indexes, expectedSize)
return - тут ни на что не влияет я сверил глазами консоль вывод одинаковый
с команой ретурн разобрались, ято всё же очипятка
меня интересует только одн как сходятся звёзды чтобы сробатывала команда
indexes.removeLast();
и где тут стоит проверка что пора остановить работу программы ,?
https://ibb.co/e2MuzT
https://ibb.co/d1wito

Добавлено через 31 секунду
я это понял что если длинна меньше желаемой. то в консоль ничего не выводит сама рекурсия у тебя срабатывает кога ты говоришь
make(arr, indexes, expectedSize)
return - тут ни на что не влияет я сверил глазами консоль вывод одинаковый
с команой ретурн разобрались, ято всё же очипятка
меня интересует только одн как сходятся звёзды чтобы сробатывала команда
indexes.removeLast();
и где тут стоит проверка что пора остановить работу программы ,?
https://ibb.co/e2MuzT
https://ibb.co/d1wito
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
30.07.2018, 17:10
Цитата Сообщение от WinniPuh Посмотреть сообщение
return - тут ни на что не влияет я сверил глазами консоль вывод одинаковый
Просто повезло)
Java
1
2
strBox = {'a', 'b', 'c', 'd', 'e', 'f'};
expectedSize = 3;
Вывод должен отличаться
Цитата Сообщение от WinniPuh Посмотреть сообщение
где тут стоит проверка что пора остановить работу программы
Когда переберем все варианты, то программа и остановится.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
30.07.2018, 17:26
Добавлено через 9 минут
ладно позже вернусь к этому решению когда поумнею..чёт всёравно е пойму.
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
30.07.2018, 17:28
Цитата Сообщение от WinniPuh Посмотреть сообщение
ретурн разобрались, это всё же очипятка
Сильно сомневаюсь.
Java
1
2
3
char[] strBox = {'a', 'b', 'c', 'd'};
Deque<Integer> indexes = new LinkedList<>();
make(strBox, indexes, 3);
Вывод с return
Кликните здесь для просмотра всего текста
0
1
2
3
a b c
3
a b d
2
3
a c b
3
a c d
2
3
a d b
3
a d c
1
2
3
b a c
3
b a d
2
3
b c a
3
b c d
2
3
b d a
3
b d c
1
2
3
c a b
3
c a d
2
3
c b a
3
c b d
2
3
c d a
3
c d b
1
2
3
d a b
3
d a c
2
3
d b a
3
d b c
2
3
d c a
3
d c b

Вывод без return
Кликните здесь для просмотра всего текста
0
1
2
3
a b c
4
3
a b d
4
2
3
a c b
4
3
a c d
4
2
3
a d b
4
3
a d c
4
1
2
3
b a c
4
3
b a d
4
2
3
b c a
4
3
b c d
4
2
3
b d a
4
3
b d c
4
1
2
3
c a b
4
3
c a d
4
2
3
c b a
4
3
c b d
4
2
3
c d a
4
3
c d b
4
1
2
3
d a b
4
3
d a c
4
2
3
d b a
4
3
d b c
4
2
3
d c a
4
3
d c b
4

С return максимальный размер indexes будет равен expectedSize, а без - размеру strBox

Цитата Сообщение от WinniPuh Посмотреть сообщение
ответ прошу для чайников
Пошаговая трасировка и на каждом шаге смотреть значения переменных. Так же разберитесь что такое стек вызовов
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
30.07.2018, 17:33
блин да как так то а у меня что с ретурн что без всё чётко выводит
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
30.07.2018, 17:36
Цитата Сообщение от WinniPuh Посмотреть сообщение
что с ретурн что без
Говорю ж повезло. Или не очень)
Цитата Сообщение от JIeIIIa Посмотреть сообщение
С return максимальный размер indexes будет равен expectedSize, а без - размеру strBox
Предполагается, что strBox содержит только уникальные значения.
0
75 / 61 / 29
Регистрация: 20.04.2015
Сообщений: 415
30.07.2018, 17:50
что с ретурн что без ретурн у тебя if (indexes.size() == expectedSize) ты задал 4 он всегда будет проверять на 4 и пофиг на команду ретурн
я вот даже добавил символ и задал 5 он всегда выводит только 5 сиволов потому что идёт проверка это логично
это выводится без ретурна это логично ретурн личшее
Кликните здесь для просмотра всего текста
0
1
2
3
4
5
a b c d f
4
5
a b c f d
3
4
5
a b d c f
4
5
a b d f c
3
4
5
a b f c d
4
5
a b f d c
2
3
4
5
a c b d f
4
5
a c b f d
3
4
5
a c d b f
4
5
a c d f b
3
4
5
a c f b d
4
5
a c f d b
2
3
4
5
a d b c f
4
5
a d b f c
3
4
5
a d c b f
4
5
a d c f b
3
4
5
a d f b c
4
5
a d f c b
2
3
4
5
a f b c d
4
5
a f b d c
3
4
5
a f c b d
4
5
a f c d b
3
4
5
a f d b c
4
5
a f d c b
1
2
3
4
5
b a c d f
4
5
b a c f d
3
4
5
b a d c f
4
5
b a d f c
3
4
5
b a f c d
4
5
b a f d c
2
3
4
5
b c a d f
4
5
b c a f d
3
4
5
b c d a f
4
5
b c d f a
3
4
5
b c f a d
4
5
b c f d a
2
3
4
5
b d a c f
4
5
b d a f c
3
4
5
b d c a f
4
5
b d c f a
3
4
5
b d f a c
4
5
b d f c a
2
3
4
5
b f a c d
4
5
b f a d c
3
4
5
b f c a d
4
5
b f c d a
3
4
5
b f d a c
4
5
b f d c a
1
2
3
4
5
c a b d f
4
5
c a b f d
3
4
5
c a d b f
4
5
c a d f b
3
4
5
c a f b d
4
5
c a f d b
2
3
4
5
c b a d f
4
5
c b a f d
3
4
5
c b d a f
4
5
c b d f a
3
4
5
c b f a d
4
5
c b f d a
2
3
4
5
c d a b f
4
5
c d a f b
3
4
5
c d b a f
4
5
c d b f a
3
4
5
c d f a b
4
5
c d f b a
2
3
4
5
c f a b d
4
5
c f a d b
3
4
5
c f b a d
4
5
c f b d a
3
4
5
c f d a b
4
5
c f d b a
1
2
3
4
5
d a b c f
4
5
d a b f c
3
4
5
d a c b f
4
5
d a c f b
3
4
5
d a f b c
4
5
d a f c b
2
3
4
5
d b a c f
4
5
d b a f c
3
4
5
d b c a f
4
5
d b c f a
3
4
5
d b f a c
4
5
d b f c a
2
3
4
5
d c a b f
4
5
d c a f b
3
4
5
d c b a f
4
5
d c b f a
3
4
5
d c f a b
4
5
d c f b a
2
3
4
5
d f a b c
4
5
d f a c b
3
4
5
d f b a c
4
5
d f b c a
3
4
5
d f c a b
4
5
d f c b a
1
2
3
4
5
f a b c d
4
5
f a b d c
3
4
5
f a c b d
4
5
f a c d b
3
4
5
f a d b c
4
5
f a d c b
2
3
4
5
f b a c d
4
5
f b a d c
3
4
5
f b c a d
4
5
f b c d a
3
4
5
f b d a c
4
5
f b d c a
2
3
4
5
f c a b d
4
5
f c a d b
3
4
5
f c b a d
4
5
f c b d a
3
4
5
f c d a b
4
5
f c d b a
2
3
4
5
f d a b c
4
5
f d a c b
3
4
5
f d b a c
4
5
f d b c a
3
4
5
f d c a b
4
5
f d c b a



Цитата Сообщение от JIeIIIa Посмотреть сообщение
Предполагается, что strBox содержит только уникальные значения.
это не предполагается это понятно из условия
Java
1
2
 if (!indexes.contains(i)) {
                    indexes.addLast(i);
мне не понятно как срабатывает команда удаление последнего индекса и не понятно
Цитата Сообщение от JIeIIIa Посмотреть сообщение
Когда переберем все варианты, то программа и остановится.
как программа поняла что она перебрала все варианты? где это условие,? я этого условия не вижу в коде???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2018, 17:50
Помогаю со студенческими работами здесь

Выборка подмножества комбинаций без повторов из множества всех комбинаций перестановок
Собственно вопрос. Существует ли алгоритм нахождения без перебора уникальных комбинаций в сортированном множестве всех возможных...

Перебор всех возможных комбинаций из элементов двумерной матрицы
Собственно задача: Фирме нужно закупить n товаров. Каждый товар можно купить у одного из m продавцов. Необходим алгоритм, перебирающий...

Получение i-ого элемента массива без вычисления всех элементов (Ленивые вычисления)
Здравствуйте! Необходимо в цикле получать каждый i-й элемнент. Работаю с массивами массивов целых чисел, которые представляют всевозможные...

Найти произведение всех элементов массива и сумму всех нечетных элементов массива
Массив состоит из чисел от 1 до 200, кратных 13. a) Найти произведение всех элементов массива б) Найти сумму всех нечетных элементов...

Массивы: определение частного от деления суммы всех положительных элементов на количество всех отрицательных элементов массива
Составьте алгоритм определения частного от деления суммы всех положительных элементов на количество всех отрицательных элементов массива....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru