Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2017.07.23;
Скачать: [xml.tar.bz2];

Вниз

Вывод всех перестановок 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.002 c
3-1314177637
Gevs
2011-08-24 13:20
2017.07.23
вид курсора и процент поиска


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


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


2-1428921020
Александр_2015
2015-04-13 13:30
2017.07.23
Oracle и InterBase не совместим запрос


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский