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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2019, 11:24   #1
Александр Кравченк
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 2
Лампочка найти оптимальный метод решения задачи

Задача следующая:
Цитата:
Даны номер автобусного билета – шестизначное натуральное число и целое неотрицательное число N. Между некоторыми парами соседних цифр разрешается ставить знаки арифметических операций (+, -, *) так, чтобы результат полученного арифметического выражения стал равен N.
Требуется:
1) определить количество различных решений для заданного номера билета и N;
2) вывести все решения на экран.
Замечания
· Разрешается предполагать, что число различных решений не превосходит число строк на экране
· Разрешается пренебречь грамматической согласованностью ответа.
· Значение выражения вычисляется с учетом приоритета заданных арифметических операций.
Техническое требование:
· Программа должна проверять корректность ввода шестизначного числа
Пример правильной работы программы:
Введите шестизначное число 128500
Введите N 8512
12+8500=8512
Найдено 1 решений.
Введите шестизначное число 258179
Введите N 100
2*58-1*7-9=100
2*58*1-7-9=100
Найдено 2 решений.
Введите шестизначное число 663570
Введите N 100
Решение не существует.
Введите шестизначное число 1998
Некорректный ввод
Введите шестизначное число CHISLO
Некорректный ввод
Уже третий день не могу придумать адекватного алгоритма для поиска кроме перебора всех возможных вариантов. Есть идеи как можно оптимально решить эту задачу? Пишу на С++. Заранее спасибо.

Последний раз редактировалось Alex11223; 03.11.2019 в 11:27.
Александр Кравченк вне форума Ответить с цитированием
Старый 03.11.2019, 16:24   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,559
По умолчанию

А тут кроме тупого полного перебора ничего и на ум не приходит. И сама формулировка задачи мутная:
Цитата:
Между некоторыми парами соседних цифр разрешается
- а между некоторыми другими - не разрешается ? Приоритеты операций нужно соблюдать, если применены знаки операций ? Да, из примера видно - нужно. Подряд знаки разрешаются? Например, 5*-3 ?
Задача идиотская, на мой взгляд. Тупо всовываем в цикле между цифрами + - * или <ничего> (т.е. всего 1024 варианта), парсим на предмет приоритета и считаем.

Последний раз редактировалось digitalis; 04.11.2019 в 11:31.
digitalis вне форума Ответить с цитированием
Старый 03.11.2019, 22:02   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если устроит решение на Паскале, то можете брать отсюда - https://www.programmersforum.ru/showthread.php?t=145412
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2019, 11:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,559
По умолчанию

Ничто не ново под Луной Не прошло и 8 лет, как контролеры в автобусе опять занялись проверкой счастливых билетов.
digitalis вне форума Ответить с цитированием
Старый 04.11.2019, 13:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
как контролеры в автобусе опять занялись проверкой счастливых билетов
Это не имеет отношения к счастливым билетам...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2019, 18:30   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,559
По умолчанию

А жаль... Значит, нет шчасця не только в жизни, но и в автобусах
digitalis вне форума Ответить с цитированием
Старый 05.11.2019, 08:45   #7
Александр Кравченк
Новичок
Джуниор
 
Регистрация: 03.11.2019
Сообщений: 2
По умолчанию

Спасибо, но я же правильно понимаю, что это тоже перебор, просто красивее оформленный?
Александр Кравченк вне форума Ответить с цитированием
Старый 05.11.2019, 09:16   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Александр Кравченк Посмотреть сообщение
Спасибо, но я же правильно понимаю, что это тоже перебор, просто красивее оформленный?
однозначно - перебор. полный. без всяких украшений.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каков найэффективнейший метод для решения задачи? Stilet Общие вопросы по программированию, компьютерный форум 3 24.11.2010 14:39
Триатлон на паскале..помогите найти аглоритм решения задачи? ЕвгениуS Помощь студентам 4 05.04.2009 12:22
Пожалуйста помогите найти ошибку в коде решения задачи на записи GUnt Паскаль, Turbo Pascal, PascalABC.NET 3 27.12.2008 21:09
Помогите найти решения? Метод потенциалов! Dmitry_Boxing Свободное общение 0 16.02.2008 17:36