-1

数値のリストのすべての順列を生成する必要があります。番号のリストは 1 から n までです。また、順列のサイズは 1 ~ m にすることができます。したがって、n=4、m=3 の場合、順列が必要です。

111
112
113
114
121
122
123
124
131
132
133
134
142
142
143
144
211.....

等々..

また、再帰/反復のどちらを使用する必要があり、その理由は?

4

1 に答える 1

0

これは、辞書式順序で前の順列から次の順列を返すアルゴリズムです。

  1. a [k] <a [k+1]となる最大のインデックスkを見つけます。そのようなインデックスが存在しない場合、順列は最後の順列です。
  2. a [k]<a[l]となる最大のインデックスlを見つけます。k + 1はそのようなインデックスであるため、lは明確に定義され、k<lを満たします。
  3. a[k]をa[l]と交換します。
  4. a [k+1]から最後の要素a[n]までの順序を逆にします。

それを実装してみてください。

于 2012-09-22T08:14:01.920 に答える