Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Вниз

Задачка.   Найти похожие ветки 

 
VictorT   (2002-07-01 11:34) [0]

Есть слово, нужно используя все буквы, которые есть в этом слове, получить, все возможные слова (не проверяя есть ли такое слово). Я уже реализовал это, используя неполный перебор, но может кто посоветует, что получше.


 
Виктор Щербаков   (2002-07-01 11:35) [1]

Дык если перебор не полный, то ты нашел не все варианты.


 
AFROLOV   (2002-07-01 11:48) [2]

Может есть некие ограничения? Например - слово должно состоять из слогов(их кол-во в русском языке ограничено). Тогда возможно полный перебор и не потребуется.


 
VictorT   (2002-07-01 11:48) [3]

Ну, наверное не правильно выразился, просто перебор с отсечением заведомо неправильных варианотов, среди которых уже исчутся правильные.


 
VictorT   (2002-07-01 11:51) [4]


> AFROLOV © (01.07.02 11:48)

Я ж пишу, что проверку на правильность слова делать не надо, просто получить все возможные комбинации букв.


 
Виктор Щербаков   (2002-07-01 11:52) [5]

Что значит "неправильный вариант"? Это должно было быть в условии. А так - задача на получение всех перестановок. Вобщем простая.


 
VictorT   (2002-07-01 12:06) [6]


> Виктор Щербаков © (01.07.02 11:52)

Вот как-раз и не придумал, как красиво реализовать получение этих всех перстановок. Я сделал так:
допустим имеем слово из 8-ми букв. Имеем число 12345678 в восьмиричной же системе счисления, где каждый разряд означает, какая по номеру буква будет в данном месте. То-есть это число означает по сути тоже самое слово. Потом инкрементирую это число, и смотрю, если в нём нет одинаковых цифр, то получил следуюющее слово, иначе инкрементирую дальше. 8 букв тут только для примера. Может кто предложит более быстрый вариант?


 
Игорь Шевченко   (2002-07-01 12:22) [7]

VictorT © (01.07.02 12:06)

Школьная математика, раздел "комбинаторика"


 
VictorT   (2002-07-01 12:29) [8]


> Игорь Шевченко © (01.07.02 12:22)

Я такого в школе не проходил, только в вузе, как подраздел теории вероятности, но там было только про то, как посчитать кол-во перестановок, а не сами эти перестановки.


 
VictorT   (2002-07-01 12:37) [9]

Вот даже ссылочку нашёл, подтверждающую мой предыдущий пост:
http://www.ksc.ru/cdo/books/tv/page13.html


 
Kaban   (2002-07-01 12:39) [10]

procedure GetWord(RestLetters, Word : String);
var i : Integer;
S : String;
Chr : Char;
begin
if RestLetters = "" then
begin
// Например пишем Word в файл
end
else
for i:=1 to Length(RestLetters) do
begin
S := RestLetters;
Chr := S[i];
Delete(S, i, 1);
GetWord(S, Word + Chr);
end;
end;


 
Игорь Шевченко   (2002-07-01 12:50) [11]

VictorT © (01.07.02 12:29)

Изменилась школьная программа за 16 лет :-)))

Я проходил...


 
AFROLOV   (2002-07-01 13:32) [12]

Почитай
http://algolist.manual.ru/maths/combinat/index.php
возможно найдешь работающий пример.


 
VictorT   (2002-07-01 13:48) [13]


> Kaban © (01.07.02 12:39)
> AFROLOV © (01.07.02 13:32)

Спасибочки, самое то.


 
Мых   (2002-07-01 19:51) [14]

to Шевчченко
А потом еще раз изменилась... Я тоже проходил и совсем недавно



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
3-95271
Дундук
2002-07-09 09:43
2002.07.29
Ввод в DBGrid


14-95523
fonarick
2002-07-01 20:59
2002.07.29
Internet->money


1-95367
Андрусь
2002-07-15 19:22
2002.07.29
Как приспособить своё приложение к разным настройкам ш


1-95407
hooch
2002-07-16 12:11
2002.07.29
Фреймы в dll (D6, WinXP)


1-95306
id_privin
2002-07-17 15:47
2002.07.29
Dinamic array vs Open array





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский