Сергей Григоренко
15 сообщений
#16 лет назад
Есть структура. Для каждого пользователя в базе записан номер (1,2,3.....)
1
2 3 4
5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22 ......................................


и так далее до бесконечности.
Значит задача.
допустим задается номер места - 2
нужно вывести из функции:
Уровень 1:
пользователь 5
пользователь 6
пользователь 7
Уровень 2:
пользователь 14
пользователь 15
пользователь 16
пользователь 17
пользователь 18
пользователь 19
пользователь 20
пользователь 21
пользователь 22
Уровень 3:
.................................
.................................
.................................
.................................


и так све уровни до бесконечности (ну допустим до 50 уровней)
то есть задаем номер и получаем структуру по уровням только под этим номером.
одному номеру принадлежат - 3 каждому из этих трех еще по три.

если задан номер (n=2) то места 5,6,7 определяем так
5=(3*n)-1
6=(3*n)
7=(3*n)+1
места с 14 по 22 определяем так

14=3*((3*n)-1)-1
15=3*((3*n)-1)
16=3*((3*n)-1)+1

17=3*(3*n)-1
18=3*(3*n)
19=3*(3*n)+1

20=3*((3*n)+1)-1
21=3*((3*n)+1)
22=3*((3*n)+1)+1


Пробовал рекурсией:
но она считае вертикально а надо горизонтально

Помогите кто знает!!!
Александр Е.
80 сообщений
#16 лет назад
Не совсем понятен принцип организации дерева. Вообще, обычно я решаю подобные задачи следующим образом. Представляем этот набор чисел как некую последовательность, заданную рекуррентным способом. Затем аналитически подбираем формулу для члена прогрессии, исключающую рекурсию, либо наоборот, исходная формула приводится к известной рекурсии.
Если коротко - составьте на бумаге математическую модель, упростите ее, а потом пишите алгоритм.
Александр Е.
80 сообщений
#16 лет назад
Если нарисуете схемку дерева, хотя бы простенькую в MS Paint (тут некоторые даже Мону Лизу там изображают ), посмотрим, что можно сделать.
Андрей К.
35 сообщений
#16 лет назад
Чтобы вбрать элементы уровня n:
1 Получить большийэлемент уровня 2*n* 3^(n-1)+1 (если он есть).
2 Взять начиная с полученного элемента 3^n в сторону убывания номеров.
Дерево можно и не строить, все элементы держать в списке или массиве