Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > дерево с тремя детьми |
Автор: Chameleon 5.12.2005, 00:36 | ||
в универе дали одно задание, после недолгих раздумий пришел к выводу ![]()
главное условие чтобы сумма всех узлов от листа до корня не превышала заданного N мучаюсь уже не один день ![]() ![]() ![]() ![]() |
Автор: DeadSoul 5.12.2005, 00:47 |
Chameleon, дерево должно быть сортированным? |
Автор: Chameleon 5.12.2005, 00:52 |
структура узла четкая: первый потомок =1, второй =2, третий=3, как на "рисунке" |
Автор: DeadSoul 5.12.2005, 00:54 |
Кроме этого ограничения есть? |
Автор: Chameleon 5.12.2005, 00:57 |
нет, самое главное условие это сумма всех узлов от листа до корня, который =0 непревосходит N |
Автор: Mephistopheles 5.12.2005, 11:20 |
В чём прблема-то? Переходишь на след. узел(кстати что под этим подразумевается), увеличиваешь переменную на единицу и сравниваешь. |
Автор: S.A.P. 5.12.2005, 11:53 |
Chameleon у каждого узла должно быть строго 3 ветки или просто до 3-х веток? |
Автор: Chameleon 5.12.2005, 12:04 | ||
до 3-х еслм N=3 то надо получить
и еще одно небольшое дополнение не столь важное в в узлах должет быль указатель на предка, а не толко на потомка |
Автор: S.A.P. 5.12.2005, 13:03 | ||||
Я совсем запутался ![]()
а это я уже понимаю - количество уровней + 1. А сумма узлов тут - 8. Что ты понимаешь под N? Сумму узлов или количество уровней? |
Автор: SDenis 5.12.2005, 14:50 |
А почему нельзя хранить в каждом узле "сумму " полученную на всех предыдущих узлах![]() ![]() ![]() |
Автор: Chameleon 5.12.2005, 21:18 | ||||
можно я уже пытался реализовать, но еще надо печатать путь(по узлам) от листьев до корня, тут какрас и нужна ссылка на предка, а сами лисьтя внести в некий линейный список(отдельный). как листья внести в список я проедставляю, но как само дерево строиться не могу втыкнуть ![]() ![]() ![]()
количество уровней действительно N+1,но сумма пути по узлам от всех ЛИСТЬЕВ до корня=N. если взять любой лист то сумма узлов до корня =N. корень = 0 птому что так путь не увеличивается, увеличивается только кол-во уровней. сам уже путаться стал вот условие моего задания: по лестнице прыгает мячик, мячик за один прыжок может перепрыгнуть на 1-у, 2-е или 3 ступеньки. необходимо подсчитать количество всех возможных прыжков и распечатать их на экран |
Автор: S.A.P. 6.12.2005, 10:29 | ||
Тут дерево строить не надо, в памяти надо хранить текущий список, который будет формироваться в процессе перебора. Вот решение
|
Автор: Chameleon 15.12.2005, 14:09 |
спасибо за программу, работает прнкрасно, тока есть какойто баг который я не пойму откуда идет если длинна лога нечетная то при освобождение памяти терминал ругается введите длинну лестници: 3 111 12 21 3 колличество всевозможных прыжков по лестнице 4 *** glibc detected *** free(): invalid next size (fast): 0x09bfd008 *** Aborted а при четной длинне все нрмально bash-3.00$ ./s.out введите длинну лестници: 2 11 2 колличество всевозможных прыжков по лестнице 2 |
Автор: blackofe 15.12.2005, 19:08 | ||||
у меня VC2003 такую ошибку не дает ( ![]()
|
Автор: S.A.P. 15.12.2005, 20:33 | ||
Добавлено @ 20:35 Chameleon замени функцию jump на ту, что дал blackofe. |
Автор: Chameleon 16.12.2005, 12:05 |
ага было такое дело, массив на 1 длянне создал и все нормально стало |