Статьи по Delphi (028)…
Перебор вариантов.
| Перебор вариантов |
Code: { Если Х - количество видов букв, из которых состоит генеримое слово, А Y - максимальная длинна слова, то общее количество сгенеренных. Слов равно: Z = Y^1 + Y^2 + ... + Y^X }. Var. Gen_Length: Byte; { максимальная длинна слова для генерации }. Gen_CharArray: String; { массив символов, из которых будет сгенерированы слова }. InS: String; { строка, из которой будет создан массив Gen_CharArray }. I: Byte; { счётчик }. F: Text; { файл для сохранения сгенерированных слов }. { рекурсивная процедура генерации слова }. Procedure GenNext(Gen_LastCharNo: Byte; Gen_Str: String); Var. I: Byte; { счётчик }. Begin. { генерируем до тех пор, пока не достигнем последнего символа в массиве генерации }. For I := 1 to Byte(Gen_CharArray[0]) do. Begin. { устанавливаем длинну строки слова, которое сейчас сгенерируем }. Byte(Gen_Str[0]) := Gen_LastCharNo; { изменяем последний символ генерируемого слова, которое нам передано. В заголовке процедуры }. Gen_Str[Gen_LastCharNo] := Gen_CharArray[I]; { слово сгенерировано, записываем в файл }. WriteLn(F, Gen_Str); { если мы не достигли максимальной длинны слова, вызываем себя рекурсивно, Указав, что уже следующи символ будет последним и передавая уже. Сгенерированный кусок строки }. If Gen_Length > Gen_LastCharNo then GenNext(Gen_LastCharNo+1, Gen_Str); End; End; Begin. Gen_CharArray := 'DELPHI'; { в примере максимальная длинна слова для генерации равна длинне массива символов }. Gen_Length := Byte(Gen_CharArray[0]); Assign(F, 'OUTPUT.TXT'); ReWrite(F); { запускаем генерацию. Gen_LastCharNo - последний символ будет иметь номер 1. Gen_Str - пока строка пуста }. GenNext(1, ''); Close(F); End.
Автор: --= Eagle =--
©Drkb::04182.