Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Вниз

Скорее математический вопрос... 


Дмитрий Д.   (2001-12-17 13:28) [0]

Не подскажет ли кто алгоритм для получения всех возможных значений составленных из элементов массива(например 3х3):

q w e
a s d
z x c

то есть result может быть для первой строки:
qwe
qwd
qwc
qse
qsd
qsc

и так далее...
важен сам алгоритм, потому как значения массива могут быть как буквы так и целые слова

Заранее спасибо.



Виктор Щербаков   (2001-12-17 13:33) [1]

Три вложенных цикла. Один по первому столбцу, другой по второму, третий по третьему. Проблема то в чем?



Дмитрий Д.   (2001-12-17 13:42) [2]

это понятно
проблема в том у меня число и строк и столбцов может быть различным...
(3х3 я для примера взял)
поэтому и нужен алгоритм



Виктор Щербаков   (2001-12-17 13:46) [3]

Тогда рекурсивный перебор:
Функция вызывает сама себя, передавая в кач. параметра номер столбца массива. И так пока не дойдет до последнего столбца (или до первого). В самой функции получится цикл по одному столбцу.



Дмитрий Д.   (2001-12-17 13:59) [4]

а кусочек кода можно ?
про рекурсию я думал только никак чтото сообразить не могу



Виктор Щербаков   (2001-12-17 14:11) [5]

Че то типа этого (на скорую руку писал).
Массив сам заполнишь чем надо.

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;





Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.036 c
4-22491           NikRus                2001-11-04 18:09  2002.01.08  
Возможен ли перехват нажатия клавиш: Ctrl+Esc, Ctrl+Alt+Del


1-22140           Serg5                 2001-12-20 10:17  2002.01.08  
Вопрос, есть ли возможность уменьшить шрифт до 4 пикселей, менятся он меняется(программа не ругается), а на экран (Canvas.Font) он всё равно выводится 8 (самым минимальным)


6-22292           3d[Power]             2001-10-06 18:16  2002.01.08  
Сетевой код для игры.


4-22498           cher_gvf              2001-11-05 20:12  2002.01.08  
Как узнать запущен ли такой процесс?


6-22301           Китаец Что За         2001-10-10 14:45  2002.01.08  
Склерозик что ли?