Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.07.23;
Скачать: CL | DM;

Вниз

Вывод всех перестановок k элементов из множества N имеющихся   Найти похожие ветки 

 
Очень злой   (2012-11-06 00:55) [40]

Вроде так... Правда порядок определяется порядком следования символов в Edit1

например:
Edit1.text="abcd6r"   K=4

abcd
abc6
abcr
abd6
abdr
ab6r
acd6
acdr
ac6r
ad6r
bcd6
bcdr
bc6r
bd6r
cd6r


 
Очень злой   (2012-11-06 01:21) [41]

Попробовал запустить код Sha, и понял что я неправильно понял условие...
Сейчас еще подумаю


 
Очень злой   (2012-11-06 01:48) [42]


>  один из способов перечисления размещений состоит в использовании
> перестановок и сочетаний, а именно во всевозможных перестановках
> элементов каждого сочетания


Если так то:

var
 n,s:string;
...

//ищем перестановки
procedure recurse2(s:string;pos:integer);
var
 c:char;
 i:integer;
begin
if pos>=length(s) then Form1.Memo1.Lines.Add(s)
 else for i:=pos to length(s) do
   begin
      c:=s[pos];
      s[pos]:=s[i];
      s[i]:=c;
      recurse2(s,pos+1);
   end;
end;

// Ищем сочетания
procedure recurs(pos,start,last,endd:integer);
var
 i:integer;
begin
 if last>endd then recurse2(s,1)
   else for i:=start to last do
        begin
          s[pos]:=n[i];
          recurs(pos+1,i+1,last+1,endd);
        end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 n:=Edit1.text;
 setlength(s,SpinEdit1.Value);
//  Memo1.Lines.Clear;
//  Memo1.Lines.BeginUpdate;
 recurs(1,1,length(Edit1.Text)-SpinEdit1.Value+1,Length(Edit1.text));
//  Memo1.Lines.EndUpdate;
end;


Насчет скорости не замерял... да и намутил я тут, много чего неоптимально , можно улучшить,
например length(s) вычислять не нужно , так как оно всегда равно spinedit1.value, ну и еще есть чего оптимизировать


 
Очень злой   (2012-11-06 09:09) [43]

М-да, а если принимать во внимание время, то все равно алгоритм Sha намного (причем очень)  быстрее получается...


 
Sha ©   (2012-11-09 21:52) [44]

вот тут еще немного быстрее:

http://guildalfa.ru/alsha/node/26



Страницы: 1 2 вся ветка

Текущий архив: 2017.07.23;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.005 c
2-1428921020
Александр_2015
2015-04-13 13:30
2017.07.23
Oracle и InterBase не совместим запрос


2-1429109329
dis12345
2015-04-15 17:48
2017.07.23
Округление FormatFloat


1-1352499057
Tcount
2012-11-10 02:10
2017.07.23
ListView - текущее кол-во выделенных строк в режиме "Multiselect"


8-1243261446
DoKi
2009-05-25 18:24
2017.07.23
Простой пример Glscene


1-1351450806
ННН
2012-10-28 23:00
2017.07.23
Вывод всех перестановок k элементов из множества N имеющихся