Aşağıdaki yordamla oluşturulabilecek sayıların permütasyonu olarak, başa ekli bir uzunluk dizisi tanımlayın :n
1, 2, ..., n
Numara ile başlayın
1
.- arasındaki her sayı
2
içinn
, bu sayıyı dizinin başına veya sonuna yerleştirin ( başlığın başına veya sonuna ekleyin , dolayısıyla dizinin adı).
Örneğin, bu, uzunluk 4'ün başına bir ek ekleme dizisi oluşturmanın geçerli bir yoludur:
1
21 [beginning]
213 [end]
2134 [end]
Göreviniz bir numara alacak bir program veya fonksiyon oluşturmaktır n
den 3
üzere 30
girdi olarak ve yazdırabilir veya uzunluktaki tüm başa getirebilir-ekleme dizileri dönmek n
9 temsil edilecek Yukarıdaki dizeleri ve değil listeler, sayılar çıktılıyorsanız (sözlük sırasını içinde a-u
dize uzunluğunu korumak için harf olarak ). Örneğin, bu sipariş şöyledir n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
Genel olarak, uzunluk olarak 2 n-1 başa ekli permütasyon vardır n
.
Kodunuzda kendi dilinizde yerleşik bir sıralama işlevi kullanamazsınız. Bunu herhangi bir dilde yapmak için en kısa program kazanır.
a-u
. Sadece sayı listelerini çıkarabilir miyiz?