Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
1-95339
Leny
2002-07-18 07:53
2002.07.29
Изменить цвет текста


6-95463
elefant
2002-05-11 12:48
2002.07.29
Мастера ПОМОГИТЕ!!!


1-95428
Otehr_Gray
2002-07-15 11:45
2002.07.29
Вместо Delphi - два окошка


7-95592
KarlovAF
2002-03-28 12:46
2002.07.29
Как заблокировать клавиатуру и мышку?


1-95358
Skin
2002-07-17 22:52
2002.07.29
Systray