![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скорее математический вопрос... [D5, Win95/98, Win2k]
Дмитрий Д. © (2001-12-17 13:28:00)Не подскажет ли кто алгоритм для получения всех возможных значений составленных из элементов массива(например 3х3):
q w e
a s d
z x c
то есть result может быть для первой строки:
qwe
qwd
qwc
qse
qsd
qsc
и так далее...
важен сам алгоритм, потому как значения массива могут быть как буквы так и целые слова
Заранее спасибо.
Виктор Щербаков (2001-12-17 14:11:00) [1]Че то типа этого (на скорую руку писал).
Массив сам заполнишь чем надо.
procedure TForm1.Button2Click(Sender: TObject);
var a: array[1..3, 1..3] of char;
CurLine: String;
procedure Proc1(Col: Integer);
var i: Integer;
begin
for i := 1 to 3 do
begin
if Col = 0 then
begin
Memo1.Lines.Add(CurLine);
exit;
end;
CurLine := CurLine + a[i, col];
proc1(Col - 1);
SetLength(CurLine, Length(CurLine) - 1);
end;
end;
begin
CurLine := "";
proc1(3);
end;
Дмитрий Д. (2001-12-17 13:59:00) [2]а кусочек кода можно ?
про рекурсию я думал только никак чтото сообразить не могу
Виктор Щербаков (2001-12-17 13:46:00) [3]Тогда рекурсивный перебор:
Функция вызывает сама себя, передавая в кач. параметра номер столбца массива. И так пока не дойдет до последнего столбца (или до первого). В самой функции получится цикл по одному столбцу.
Дмитрий Д. (2001-12-17 13:42:00) [4]это понятно
проблема в том у меня число и строк и столбцов может быть различным...
(3х3 я для примера взял)
поэтому и нужен алгоритм
Виктор Щербаков (2001-12-17 13:33:00) [5]Три вложенных цикла. Один по первому столбцу, другой по второму, третий по третьему. Проблема то в чем?