Регистрация Правила Главная форума Поиск |
0
- 12.12.2012 - 19:31
|
Помогите рассчитать уровень ветки(вложенности?, ...) 1с7.7 бух dbf В математическом виде проблема выглядит она так: Есть таблица значений, в которой хранятся некие пары чисел. Строки пронумерованы(это не важно) Указываем любую строку в ТЗ и программа должна найти в этой таблице все строки, числа в которых не выходят за диапазон чисел в указанной паре (это легко) и надо пронумеровать полученные строки начиная с1 так, что бы в числах отражался уровень (вложенности, ветки ...). Когда всё вложено как в матрешке реализовал. А когда в одной матрешке может быть несколько самостоятельных матрешек, что-то не соображу. Тут надо как-то через рекурсию, но в ней я слаб. Например, программа выбрала строку 13. Просмотр начинаем сверху. 1) 1,5 2 2) 1,3 3 4) 6,9 2 7) 6,8 3 3) 7,8 4 6) 3,5 3 5) 4,5 4 8) 1,40 9) 8,35 10) 9,15 11) 9,18 12) 1,14 13) 1,9 1 14) 18,18 15) 2,14 обратите внимание, что 1)нельзя сортировать данную таблицу, что бы разместить как можно больше строк из неё. 2) результат зависит от напрвления обхода таблицы, т.е. от того, что ляжет на второй уровень. Если второй уровень умостить значениями 1-2,2-3,3-4...8-9, то на такие основания можно положить только такие же (если все числа натуральные).Проекция любых пар чисел на ось 1-9 не должны накладываться друг на друга. Если втречается более "широкая" пара, должно сформироваться сообщение о номере строке и паре, но обход должен быть продолжен до конца таблицы значений. (По размеру она не более 50 строк) На Инфостарт была информация, близкая к моей проблеме( http://infostart.ru/public/78285/ , Как не «попасть на миллион», решая задачу разузлования, http://infostart.ru/public/78032/ ), уже несколько раз "вскипятил" мозг, но не могу применить полученную информацию к решению моей задачи. Так же есть что-то общее с "ханойской" башней, только количество башен заранее не известно. В общем, помоги кодом, если можете. | |
1
- 12.12.2012 - 20:11
|
блин... мне чуть мозг не разорвало, пока читал сабж... | |
2
- 12.12.2012 - 20:30
| (0) Мисту уже починили, кыш отсюда! | |
3
- 12.12.2012 - 20:43
| Не корректная задача. Пара 1-50 и 51-99 разорвет цепочку. Хоть сверху, хоть снизу. | |
4
- 12.12.2012 - 20:47
| ... и причем здесь "1С7.7", спрашивается? Да еще "бух"?? А уж "dbf"... Мы из дурдома? :D | |
5
- 12.12.2012 - 21:02
|
решается элементарно заносим пары в ТЗ добавляем N колонок где н максимальная вложенность +1 ячейки в колонках заполняем нужным образом сформированным "индексом" формируем строку сортировки ТЗ сортируем вторым проходом выбрасываем ненужное имеем ответ | |
6
- 12.12.2012 - 21:57
|
5-Helen1986 > Вообще-то, "максимальная вложенность" (и +1) будет равна количеству строк... Не смущает? И ТС явно желает замутить какой-то отчет ;) Это, хорошо, конечно, вот только надо решить вопрос о корректности задачи. | |
7
- 12.12.2012 - 22:24
|
(0) Если я правильно понял задачу и (А1-А2) - выбранная пара алгоритм относительно простой вырисовывается (предполагается что пары упорядочены: a1<=a2) 1) удаляем все строки, для которых а1<А1 или a2>А2 2) первая из оставшихся строк b1 - b2 - формирует очередной уровень 3) "разделяем" таблицу на три (с сохранением порядка строк) а2<b1; а1>=b1 и a2<=b2; а1>b2. Первые строки из первого и последнего "обрезка" формируют тот же уровень, что и строка b1 - b2. ... Дальше рекурсивно анализ каждой из 3 таблиц. ЗЫ только вот непонятно, почему в (0) 3-5 формирует третий уровень после "занятия" тройки парой 1-3 ЗЗЫ (6) +100500 исходную задачу услышать всё же не помешало бы. Уж не из логистических ли часом? Слишком уж специфично звучит... | |
8
- 12.12.2012 - 23:34
| (6) не спорю | |
9
- 13.12.2012 - 01:11
| Когда имеешь дело с 1С первую скрипку играет предметная область а не математика. Математику решают в маткаде. | |
| Интернет-форум Краснодарского края и Краснодара |