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

Перебор всех вариантов

03.12.2015, 23:51. Показов 2465. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток...помогите пожалуйста...а то уже мучаюсь не один день...есть такая задачка сколькими вариантами можно сложить число 10 с чисел 2 3 5 (с повторениями 33222 22233)?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2015, 23:51
Ответы с готовыми решениями:

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

Перебор всех комбинаций слагаемых
Всем привет! Есть массив натуральных чисел и есть натуральное число M. Необходимо выбрать из массива чИсла, сумма которых равна М или...

Перебор всех экземпляров класса
Ребятушки, подскажите как да что. Как "найти" все экземпляры класса "X"? Допустим есть у меня класс машины. Есть несколько его...

16
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
04.12.2015, 09:41
а при чем тут java se?)
судя по вашему вопросу, ответ бесконечное число раз
0
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
04.12.2015, 10:24
В смысле сложить? 10=2+3+5, так, что ли?
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 10:48  [ТС]
Alradalion, нет вы не правильно поняли...
есть число 10 нужно посчитать сколькими комбинациями сумм чисел 2 3 5 его можно сложить
типа(22222;2233;55 и т.д.)
0
 Аватар для Alradalion
132 / 126 / 85
Регистрация: 13.09.2013
Сообщений: 485
04.12.2015, 10:59
Raketa, а я по-вашему, не сумму написал?
Ладно, попробуем по-другому. То есть если я сложу числа из вашей записи
Цитата Сообщение от Raketa Посмотреть сообщение
(с повторениями 33222 22233)?
я должен получить в сумме 10?
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 11:02  [ТС]
Alradalion, пардон(22222;2233;3322;55 и т.д.)
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
04.12.2015, 13:15
Raketa, вот взгляните, что в похожем направлении. Проанализировать и подправить для Ваших нужд уже не так сложно, как с нуля велосипед изобретать.

Добавлено через 13 минут
...редактировать не получается уже, время истекло. Вот ещё ссылка на похожую задачу с решением. А вообще, конечно, было бы неплохо и самому автору темы поискать на просторах, прежде чем помощи просить...
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.12.2015, 16:41
без оптимизаций, тупо перебором
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
public class TupoPerebor {
 
    public static void main(String[] args) {
 
        int[] s = {0, 2, 3, 5};
        int count = 0;
        for (int i1 = 0; i1 < 4; i1++) {
            for (int i2 = 0; i2 < 4; i2++) {
                for (int i3 = 0; i3 < 4; i3++) {
                    for (int i4 = 0; i4 < 4; i4++) {
                        for (int i5 = 0; i5 < 4; i5++) {
                            int sum = s[i1] + s[i2] + s[i3] + s[i4] + s[i5];
                            if (sum == 10) {
                                count++;
                                System.out.printf("%d+%d+%d+%d+%d = %d%n", s[i1], s[i2], s[i3], s[i4], s[i5], sum);
                            }
                        }
                    }
                }
            }
        }
        System.out.println("Всего вариантов " + count);
    }
}
вариантов получилось 101
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 18:03  [ТС]
Паблито, спасибо...но должно вийти 14(

Добавлено через 10 минут
Паблито, а если мне нада будет поменять условия с 10 например на 40...это уже не подойдет ведь(
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.12.2015, 18:05
Лучший ответ Сообщение было отмечено Raketa как решение

Решение

точно, мой косяк
тогда вот такой быдлокод
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
import java.util.HashSet;
import java.util.Set;
 
public class TupoPerebor {
 
    public static void main(String[] args) {
 
        Set<String> set = new HashSet<>();
        int[] s = {0, 2, 3, 5};
        int count = 0;
        for (int i1 = 0; i1 < 4; i1++) {
            for (int i2 = 0; i2 < 4; i2++) {
                for (int i3 = 0; i3 < 4; i3++) {
                    for (int i4 = 0; i4 < 4; i4++) {
                        for (int i5 = 0; i5 < 4; i5++) {
                            int sum = s[i1] + s[i2] + s[i3] + s[i4] + s[i5];
                            if (sum == 10) {
                                String str = s[i1] + "" + s[i2] + "" + s[i3] + "" + s[i4] + "" + s[i5];
                                set.add(str.replace("0", ""));
                            }
                        }
                    }
                }
            }
        }
        for (String str: set) System.out.println(str);
        System.out.println("Всего вариантов " + set.size());
    }
}
Добавлено через 54 секунды
по первых пойдет, там поменять с 10 на 40
во-вторых по условию было сказано ДЕСЯТЬ
1
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 18:06  [ТС]
Паблито, это да спасибо) я для себя просто хочу спросить как его сделать универсальным
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.12.2015, 18:10
мой вариант не выйдет сильно универсальным, потому что это прямой перебор именно под задачу
а вообще там надо добавлять вложенные циклы
сейчас их пять потому что при условии что есть слагаемые 2 3 5 максимум может быть пять двоек что бы получить в сумме 10
для сумы 40 прийдется городить слишком мого вложенных циклов
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 18:11  [ТС]
Паблито, вот блин...а что ж тогда предпринять?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.12.2015, 18:14
выпей
это я к тому что сразу надо говорить что там может быть не 10 а 40 или вообще boolean значение
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 18:49  [ТС]
Паблито, не вариант...нада будет как то еще модифицировать а потом уже выпить,но спасибо

Добавлено через 6 минут
Паблито, мой косяк не спорю...10 просто для примера привел....

Добавлено через 27 минут
HOBATOP, спасибо да я находил эту тему...но не смог разсмотреть что ето то что мне нужно...
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
04.12.2015, 21:07
Raketa, так а доработать? Не судьба? Первый вариант вероятно и не смотрели? Тут какая-то непонятная чепуха со ссылкой произошла, но можно было бы найти и по тем осколкам, которые остались. Вообще я ни когда не выкладываю чужой код, стараюсь давать ссылку. Ну раз уж не выходит, то вот такой вариант (он мне больше нравится, но допиливать его сложнее):
Кликните здесь для просмотра всего текста
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
import java.util.*;
public class PerestInt {
    private static final int SUM = 10;
    private static final int[] a = {2, 2, 2, 2, 2, 3, 3, 5, 5};
    private static final int m = a.length;
    private static int[] pole = new int[m];    
    private static ArrayList<ArrayList<Integer>> summs = new ArrayList<ArrayList<Integer>>();
    
    public static void perest(int n, int[] r) {
        int[] r1 = new int[m];        
        if (n == m) {
            sum(pole);                
        } else {
            for (int i = 0; i < m - n; i++) {
                pole[n] = r[i];
                int k = 0;            
                for (int j = 0; j < m - n; j++) {
                    if (j != i) {
                        r1[k] = r[j];
                        k++;
                    }
                }
                perest(n + 1, r1);
            }
        }
    }
    
    private static void sum(int [] p) {
        ArrayList<Integer> v = new ArrayList<Integer>();            
        int s = 0;
        for(int el : p) {
            s += el;
            if (s <= SUM) {
                v.add(el);
                Collections.sort(v);
            }
            
            if (s == SUM && !summs.contains(v)) {                
                summs.add(v);
                break;
            }
        }
    }
        
    public static void main(String[] args) {
        perest(0, a);
        for(ArrayList<Integer> v : summs) {
            System.out.println(v);
        }
    }
}

при таких параметрах выдаёт следующее:
Java
1
2
3
4
[2, 2, 2, 2, 2]
[2, 2, 3, 3]
[2, 3, 5]
[5, 5]
0
1 / 1 / 0
Регистрация: 31.01.2015
Сообщений: 197
04.12.2015, 21:54  [ТС]
HOBATOP,ага..спасибо...я уже решил задание...спасибо большое за помощь!!!
P.S. Тему можно закрывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2015, 21:54
Помогаю со студенческими работами здесь

Алгоритм получения всех вариантов ходов бота в карточной игре 101
Всех приветствую. Где-то два года назад я разработал карточную игру сто одно под android. Пока что поддерживается только игра с ботами....

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

Перебор всех возможных строк заданной длины
Строки состоят из символов с кодами от 1 до 255. Задается длина строки и надо перебрать все возможные строки заданной длины, состоящие из...

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

Перебор всех возможных вариантов
Предположим, у меня есть список spisok = Как вывести все возможнеы комбинации длиной 3, те xxx xxy xxu .... zzz


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю 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% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru