Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Всем хай! Сходу к делу!
Есть некая предметная область ( любая в принципе ). Пользователю задается вопрос, который имеет ТОЛЬКО 2 ответа: ДА/НЕТ. В зависимости от ответа задается новый вопрос или типа "решения нет" ( аля тупик ). И так продолжается, пока не будет получено "решение" или "решения нет". Для всего этого нужна структура данных бинарное дерево ( не поисковое ). Информационное поле - сам вопрос. Левый указатель - если пользователь ответил "НЕТ", правый - ответил "ДА. ======================================================= Вот есть у меня список вопросов, допустим 30 шт. Листьев в дереве получилось 9 шт. ( для примера ): из них 5ти "есть решение" и для 4рех "нет решения". А мне вот не до конца понятно, по какому принципу СТРОИТЬ это дерево? Оно НЕ поисковое. Нужен какой-то формат ( типа с какими-то отступами ) в файле, чтобы определять "смещение" при добавлении в дерево? Или проще назначить каждому вопросу некое число и превратить двоичное дерево в ПОИСКОВОЕ? Понятно, что перед этим нужно детально проработать структуру вопросов ( дерева ). Понятно, что при добавлении нового вопроса, возможно, потребуется полное перестроение дерева с его числовыми метками. спс. за внимание Добавлено для примера, возьмем диалог с пользователем о покупке дров строим дерево: tree.Insert( "Нужны березовые дрова?", 50 ); // корень tree.Insert( "Нужны сосновые дрова?", 25 ); tree.Insert( "Планируете забрать дрова самовывозом?", 75 ); tree.Insert( "На данный момент в наличии только березовые или сосновые дрова. Ничем не можем вам помочь!", 12 ); и т.д. |
Сообщ.
#2
,
|
|
|
А снабдите просто варианты ответов индексами. Где -1 = решения нет, 0 = решение, 1 .. N = следующий вопрос с индексом 1 .. N соответственно
т.е. в вашем наборе вопросов самый первый будет "Решения нет" и будет с индексом -1, второй "Решено" c индексом 0, а далее некоторый набор вопросов с двумя числами [индекс если ответ да и нет]. |