![]() |
|
![]() ![]() ![]() |
|
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
a. Генерирует с повторениями 8 случайных букв английского алфавита.
b. Проверяет, пользуясь приложенным словарем, можно ли составить из этих букв три пятибуквенных, три четырехбуквенных и три трехбуквенных слова (единственное вхождение буквы в слово). c. При невозможности повторяет шаг (a). Пример – pdfokope: poker, …, … code, …, … pop, …, … Сгенерированные буквы и слова отобразить на экране (вывести в консоль). Алгоритм желательно максимально оптимизировать по времени. -------------------------------- пунтк а и с не так сложны. самое главное - это пункт b. Помогите пожалуйста написать алгоритм поиска слов. Словарь - это текстовый документ такого вида : Aarhus Aaron Ababa aback .... и т.д. Спасибо за внимание. |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Когда то я решал подобную задачу таким способом:
1) Создать массив с типом integer (int) длиной по количеству символов находящихся в словаре. заполнить этот массив по возрастающей от 0 с шагом 1. 2) Создать массив char и копировать туда весь текст словаря. 3) Сортироть массив char по возрастающей. При этом, при переносе символа также переносить в массиве int на соответствуюшие места. Естественно тут нужна быстрая сортировка. 4) Теперь у нас получается массив вхождения символа в словарь 5) остается только по каждому генерируемому символу объединить массив вхождения и отсортировать его. 6) пройтись по данному массиву и если числа идут по порядку, то обратить на эти места внимание, и проверить в самом словаре точность вхождения. Хотя можно конечно действовать и чуть по другому. Но это уже дело вкуса ![]() -------------------- Пролетал мимо. |
|||
|
||||
dio30 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 3.10.2006 Репутация: нет Всего: нет |
А следующие задания ты сделал?
|
|||
|
||||
BEOL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Создавать масив типа чар и копировать туда весь словарь это во первых дико вовторых не самый быстрый метод допустим в руском словари тыщ 400 слов размером в 8 букв и меньше (т.к это основной размер почти всех слов) предположим что тогда в словаре средний размер слова выйдет 6 букв получается 400к.слов*6 букв/1024=2343,75 кб тоесть это не есть гуд грузить это всё в оперативную память этот метод не самый экономичный не самый быстрый но самый простой хотя это в данном случае не катит лучше воспользоваться хотябы мобильным алгоритмом т9 пробуй.....
![]() |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Кхе, а что кроме массивов словарей предлагаешь? //Критиковать все горазды
Ну оптимизируем словари. Надо сперва построить общий словарь слов длинной Х букв. Упорядочить. Потом придумать биективное отображение Char->Int. А потом по каким нибудь критериям разбить его на много массивов, нарпример по диапазонам 1-100; 100-200; 200-300 итд. Чтобы сразу знать, в каком именно массиве искать. Вотъ и новый метод решения, да, так. Другой вопрос- биективное отображение. По сути, числовой хэш. Как работает хэш я пока не знаю(слишком много для 17 лет), поэтому вы сами придумаете. -------------------- Всем добра ![]() |
|||
|
||||
BEOL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Вобще блин
![]() 1. Я никаво не критикую просто предложил алгоритм быстрее грузить пр 1 слову а не загонять весь словарь в оперативную память.... 2. То что тебе 17 лет это тебя не освобождает от отвецтвености за написаный бред мне тоже 17 лет и я не кричу это и изза этава мой код не стает быстрей или меньше занимает места.... 3. И третье """Потом придумать биективное отображение Char->Int. А потом по каким нибудь критериям разбить его на много массивов, нарпример по диапазонам 1-100; 100-200; 200-300""" Перегонаять из чара в инт разбивать на масивы )) тебе даже их прописовать надоест в описании и дойдёт до такова типа "char x40000=''";" ![]() |
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Не кипиши, спокойнее )
Функцию я такую придумал, да и без меня их немало. Конечно, числовой хэш бы лучше. Задача на перебор. Или на ИИ. Ну если моск, пиши ИИ. А я перебор напишу. Алгоритм ведь вполне четкий.
Ерм... А жесткие диски и индексация еще не придуманы?! Итерация при подгрузке выдет постоянно N. А со словарями- один раз создал за Н итерация, а потом спокойно юзаешь Стремись к оптимизации ) А больше кричишь- заметнее ;) Это сообщение отредактировал(а) SoWa - 7.7.2007, 19:46 -------------------- Всем добра ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |