0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
|
1 | |
Найти все варианты размещения знаков операций +,-,* на месте вопросов в выражении 1?2?3?4?5?6?7?8?9=10027.06.2014, 15:03. Показов 2589. Ответов 18
Метки нет (Все метки)
Составить программу, которая бы нашла все варианты размещения знаков арифметических операций +,-,* на месте вопросительных знаков в выражении 1?2?3?4?5?6?7?8?9, что значение этого выражения равнялось бы 100. Арифметические действия выполняются слева направо, а не по обычному приоритету.
0
|
27.06.2014, 15:03 | |
Ответы с готовыми решениями:
18
Найти все варианты размещения знаков арифметических операций на месте вопросительных знаков Найти все варианты размещения знаков арифметических операций на месте вопросительных знаков в выражении Найти все варианты решения 3*x – 2*y+5*z=28 уравнения на отрезке х, у, z [-100;100] Поставить знаки арифметических операций вместо знаков вопроса в выражении |
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
|
||||||
27.06.2014, 16:29 | 2 | |||||
Сообщение было отмечено rayJIB как решение
Решение
На каждой позиции возможны 3 варианта действий, при условии что приоритет выполнения действий не важен и все действия выполняются слева направо:
1
|
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
||||||
27.06.2014, 16:47 [ТС] | 3 | |||||
Спасибо огромное,а можно описание методов реализации данной программы,в частности к вот этой части:
0
|
Модератор
5235 / 2109 / 415
Регистрация: 06.01.2013
Сообщений: 4,839
|
||||||
27.06.2014, 17:04 | 4 | |||||
Рекурсией:
Но находит только количество.
1
|
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
|
27.06.2014, 17:05 [ТС] | 5 |
спасибо,разобрался!
0
|
Модератор
5235 / 2109 / 415
Регистрация: 06.01.2013
Сообщений: 4,839
|
||||||
27.06.2014, 17:15 | 6 | |||||
Сообщение было отмечено rayJIB как решение
Решение
Полное решение:
2
|
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
|
27.06.2014, 17:41 [ТС] | 7 |
Sonance,приоритет выполнения действий не важен и все действия выполняются слева направо,а в данной программе действия выполняются по приоритету.
Добавлено через 1 минуту FraidZZ, я только учусь и данного не изучал,мне ближе первый вариант,но там приоритет действий есть.
0
|
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
|
||||||
27.06.2014, 17:50 | 8 | |||||
ответ 7?
1
|
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
|
27.06.2014, 18:10 [ТС] | 9 |
SlavaSSU, да, 7
Добавлено через 5 минут FraidZZ, а можно описание методов реализации данной программы?
0
|
Модератор
5235 / 2109 / 415
Регистрация: 06.01.2013
Сообщений: 4,839
|
|
27.06.2014, 18:28 | 10 |
rayJIB, да все просто) Создается вектор (считай это массивом, просто вектор удобнее и передается из функции в функцию). Так же создается строка, в которую потом записывается выражение. И затем просто функция до тех пор пока у нее больше двух чисел в векторе рекурсивно подбирает знаки. Если же ответ сошелся, она его выводит)
0
|
0 / 0 / 0
Регистрация: 27.06.2014
Сообщений: 9
|
|
27.06.2014, 18:59 [ТС] | 11 |
FraidZZ, а можно проделать подобное используя массив?
0
|
Модератор
5235 / 2109 / 415
Регистрация: 06.01.2013
Сообщений: 4,839
|
|
27.06.2014, 19:27 | 12 |
rayJIB, придется пилить очень много костылей.
0
|
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
|
||||||
27.06.2014, 21:27 | 13 | |||||
Где вы тут приоритет увидели, все считается по порядку с лева направо, функция do() принимает аргументы 1- действие, 2-3-числа с которыми нужно проделать действие, 4- куда записать результат
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|||||||||||
29.06.2014, 11:18 | 14 | ||||||||||
А в этой программе с консоли вводятся операнды и желаемый результат:
1
|
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
|
|
29.06.2014, 11:40 | 15 |
Mr.X, а можно комментарии к первому коду, что то я не могу разобраться, как он работает
Объясните пожалуйста функцию print_variants_for_add_subtr_mult()
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
29.06.2014, 13:42 | 16 |
Она рекурсивная, накапливает в своих аргументах числовой и строковый результаты. Если в конце числовой результат равен желаемому, то печатает строковый.
0
|
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
|
|
29.06.2014, 15:56 | 17 |
Спасибо, посмотрел что такое рекурсия, нашел факториал с её помощью. В случае с факториалом все просто, можно сказать интуитивно понятно, но в данном случае все как то путается, объясните пожалуйста ход мыслей при разработке программы для данной задачи.
0
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
29.06.2014, 17:41 | 18 |
Каждая функция вызывает три (по числу возможных различных операторов в каждой позиции), т.е. получаем троичное дерево вызовов высотой 8 (по числу операторов в выражении). Каждая ветвь дерева соответствует одному из вариантов расстановки операторов.
2
|
6 / 6 / 5
Регистрация: 15.02.2013
Сообщений: 56
|
|
29.06.2014, 18:34 | 19 |
Верно я понял?
Контейнер deque - это стек; при каждом вызове функции - из стека достается 1 элемент, размер стека уменьшается на 1, и функция вызывает сама себя 3 раза(для каждой операции), уже с меньшим стеком и так пока стек не опустеет И еще вопрос: есть ли какие-то преимущества у этого способа, перед алгоритмами не использующими рекурсию. В консоли алгоритм с рекурсией работает заметно медленнее, чем без неё. P.s. Возможно глупые вопросы задаю, но хотелось бы разобраться. Просто я рекурсивный алгоритм впервые вижу. Интересный способ.
0
|
29.06.2014, 18:34 | |
29.06.2014, 18:34 | |
Помогаю со студенческими работами здесь
19
Найти все варианты покупки 100 голов скота Найти все возможные варианты получить выражение со значением 100 Рассчитать все возможные варианты для 3 знаков Программа должна подставить за место вопросов знак и вывести все варианты в консоли Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |