Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Внизпомогите с написанием алгоритма Найти похожие ветки
← →
van1tas (2005-07-26 19:51) [0]у меня уже мозги кипят. не работают к концу рабочего дня.
задача такова. есть у меня произвольное кол-во элементов массива, задаваемых пользователем (динамический массив, со string), содержащих разные строковые значения:
a[1] := "qwegd";
a[2] := "opat"
a[3] := "hijm"
a[4] := "zx";
...
и т.д.
....
сами наполненители массива, элементы внутри, тоже не известны, т.е. элементы могут содержать хоть: "x" или же "mnb", "qwertyuio" и т.д., заранее не известно.
а задача какова, необходимо сгенерировать максимальное колическтов уникальных сочетаний всех символов во всём массиве. т.е. допустим у меня в массиве три элемента: "a", "qw", "rt" и необходимо составить максимальное кол-во возможных сочетаний этих букв, пример: "aqr", "aqt", "awr", "awt".. только вот в большом массиве, вообще голова трещит. спасайте!
← →
Джо © (2005-07-26 20:01) [1]Шаг первый: пройдись по всем элементам массива (или списка) и выбери из них уникальные символы. Запиши их в строку.
Шаг второй: из символов этой строки составь все возможные сочетания.
Вот, собственно, и весь "алгоритм".
← →
van1tas (2005-07-26 20:03) [2]это кончно хорошо, но у меня даже на такое сейчас мозг не способен.. может можно с примером, а то я не понял по поводу первого пункта.
не врублюсь я просто, может я в мозгу и могу так всё прикинуть, но вот наприсать не могу, поймите меня, просто не получается, я уже просто забился со всем этим.
покажите реализацию алгоритма...
← →
Джо © (2005-07-26 20:14) [3]
> а то я не понял по поводу первого пункта.
Ну, вот простейший класс, выполняющий "в лоб" эту задачу.
type
TWordList = class (TStringList)
public
function GetUniqueChars: string;
end;
implementation
function TWordList.GetUniqueChars: string;
var
I,J: Integer;
S: string;
Ch: Char;
begin
Result := "";
for I := 0 to Count-1 do
begin
S := Strings[I];
for J := 1 to Length(S) do
begin
Ch := S[J];
if Pos (Ch,Result) = 0 then
Result := Result + Ch
end;
end;
end;
А вот так его использовать:
procedure TForm1.Button1Click(Sender: TObject);
var
List: TWordList;
begin
List := TWordList.Create;
try
List.Add("qwer");
List.Add("aawe");
List.Add("roop");
....
// показываем строку, состоящую из уникальных символов,
// взятых из содержимого списка
ShowMessage (List.GetUniqueChars);
finally
List.Free;
end;
end;
Ну, а перестановку этих символов, надеюсь, сможешь и сам сделать.
← →
van1tas (2005-07-26 20:41) [4]спасибо огромное!!, но у меня опять таки проблема, с перестановкой символов. хотя щас буду копаться, буду пробовать. если не сложно и к этому можно простейший пример.
← →
Джо © (2005-07-26 20:42) [5]См. ветку
http://delphimaster.net/view/1-1121894484/
там, если не ошибаюсь, это обсудили со всех сторон.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c