![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 26.03.2011
Сообщений: 13
|
![]()
Дан автобусный билет с номером, состоящим из N цифр. Расставить между цифрами знаки арифметических операций (+;-;*;/) и скобки таким образом, чтобы значение полученного выражения было равно 100. Можно образовывать многозначные числка из стоящих рядов цифр.
Как нужно сделать перебор операций, и для конкретного набора операций сделать еще перебор по порядку вычисления? Помогите, плиз! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
"избыточная генерация"
ZZZZ....ZZ (исходное число) X комбинация из N скобок(любых) _ пустой оператор или "склеивание" цифр * один из операторов +-/*_ построение комбинации(перебор всех) X_ZX*XZX*XZX*X....XZX*XZX_ проверка на ДОПУСТИМОСТЬ(правильность). проверка на требования (=100). Рекурсивный перебор (ABCZ...ZZ) (A) + (bczz..zz) (A) - (bczz..zz) (A) * (bczz..zz) (A) / (bczz..zz) (AB) + (czz..zz) (AB) - (czz..zz) (AB) * (czz..zz) (AB) / (czz..zz) (ABC) + (zz..zz) ....
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
#3 | |
Заблокирован
Регистрация: 26.03.2011
Сообщений: 13
|
![]() Цитата:
Можете написать краткую подобную программу? |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 125
|
![]()
evg_m
Мне тоже чрезвычайно интересно, не могли бы вы набросать хотя бы вчерне этот перебор через рекурсию. |
![]() |
![]() |
![]() |
#5 |
Заблокирован
Регистрация: 26.03.2011
Сообщений: 13
|
![]()
Да и я хочу понять, как пишется на программе
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ох, мне кажется, что я решил данную задачу.
но, скажу честно, решение совершенно неожидано для меня оказалось достаточно сложным! я даже больше скажу - я не уверен, что моё решение находит ВСЕ возможные варианты. Ещё из особенностей - моё решение находит варианты в постфиксной форме (она ещё известна, как "обратная польская запись" выражения). В принципе совсем несложно перевести из постфиксной формы в привычную инфиксную. Но я не стал этим заниматься (кому надо, тот легко это сделает сам). и последнее. ядро перебора у меня следующее: Код:
а полностью (без перевода постфиксной формы в инфиксную!) готовая программа во вложении. Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 06.04.2011
Сообщений: 7
|
![]()
Serge_Bliznykov, спасибо вам большое!
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Золушка, а вот и не за что!
К сожалению, мои опасения оправдались - код перебора работает правильно, но НЕ ВСЕ ВОЗМОЖНЫЕ операции, которые могут быть получены с помощью круглых скобок, получаются в результате моего перебора... например, для числа 123456 мой вышеприведённый код не найдёт решения... т.к. решение такое (в инфиксной и в обратной польской записи): Код:
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ну вот, как и обещал - новый переборщик вариантов.
Теперь вроде бы все возможные варианты расстановки скобок и знаков охвачены. Результат (как и сам перебор) выдаётся в форме обратной польской записи. для 123456 и числа 100 программа выдаёт следующие ответы: Код:
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 19.04.2011
Сообщений: 2
|
![]()
Доброго всем вечера!
Сергей, а вас не затруднит в 2-3 словах описать алгоритм, который использовался при написании программки? Паскаль в школе был - туго вспоминается(( Насколько я понял, помимо всех возможных перестановок арифметических действий, учитываются и перестановки порядка выполнения этих самых действий.. Если вас не затруднит, на псевдо-языке опишите алгоритм?
Все может быть и быть все может. И может быть, что может быть..
Но только быть того не может, Того, чего не может быть.. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с цифрами | CrazyTosser | Помощь студентам | 8 | 07.02.2011 09:00 |
Арифметические действия над числами | DeathWisher | Помощь студентам | 5 | 24.01.2011 19:24 |
Ассемблер.Арифметические действия с условием | Лилея | Помощь студентам | 0 | 21.01.2011 20:23 |
Арифметические действия со строкой. | Небесный | Java Мобильная разработка (Android) | 3 | 01.01.2011 01:41 |
Арифметические действия над матрицами и транспонирование | Axel1981 | Помощь студентам | 14 | 12.06.2010 20:20 |