2017-10-12 4 views
0

私は、一連の数字の順列の数を計算するプログラムを作って、順列の数字が増加から減少に変わるようにしようとしています。 例えば、n = 4の系列1,2、...、nを考えると、私が探している置換は、4> 1、2 <,4,3> 2のように、例えば1423になります。数字のリストの順列を生成し、数字を1つずつ追加することは可能ですか?

今私は、順列が正しいかどうかをチェックするプログラムの部分を作成しましたが、通常の方法で(順番を入れ替えて)すべての順列を生成するには時間がかかります。 そのため、与えられたリストのすべての順列を生成し、数字を1つずつ追加する方法があるのだろうかと思います。

たとえば、1から始まり、リストに2を加えて1-2を取得します。 1-2が、シーケンスが増加/減少のルールに従っているかどうかを調べるためにチェックされる。それが準拠すると、3が追加され、1-2-3が与えられます。その後、1-2-3がチェックされ、これは適合しない。だから我々は、私はあなたが常にitertools

from itertools import permutations 
print(list(permutations([1,2,3,4]))) 

ますで構築を使用することができますC.

答えて

0

を使用していますなど1-3を与え、3の代わりに2を加えることになりました、戻って1に

を行くだろうタプルのリストに1,2,3および4のすべての順列を出力します。

あなたはitertools documentation

+0

ありがとうでitertools.permutationsに関する詳細な情報を見つけることができます。しかし、私はこれがC言語で利用可能ではないと思いますか? – Luuk

+0

ああ待って、意味をなさない、また、1で1を追加したい。 – Davit

関連する問題