Главная страница
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.025 c
1-95372
jen_bond
2002-07-15 11:19
2002.07.29
Возможно ли??


1-95381
Ренат
2002-07-15 10:04
2002.07.29
Событие окна


7-95581
Сергей__
2002-05-14 08:55
2002.07.29
Как добавить свою команду в Проводник?


14-95497
tovSuhov
2002-07-01 07:21
2002.07.29
Единый госэкзамен (ЕГЭ)


3-95238
Pro
2002-07-08 21:40
2002.07.29
Накопительный отчет