私は以前に同様の問題に答えましたが、m と n は等しかっm = n
たです。(これを解決するには再帰的に考える必要があります) {(1,a)(2,b)(3,c)}, {(2,a)(3,b)(1,c)}, {(3,a)(1,b)(2,c)}, {(3,a)(2,b)(1,c)}, {(2,a)(1,b)(3,c)} and {(1,a)(3,b)(2,c)}
。
2 つの配列を初期値で設定し、それらletters
を と と呼びましょうnumbers
。
*---*---*---* *---*---*---*
| a | b | c | <---letters. | 1 | 2 | 3 | <---numbers.
*---*---*---* *---*---*---*
ピボットにする配列の 1 つを選択します。私は を選択しましたletters
。静的になります。
*---*---*---* *---*---*---*
| a | b | c | <---STATIC. | 1 | 2 | 3 | <---DYNAMIC.
*---*---*---* *---*---*---*
必要に応じて動的配列を反時計回りまたは時計回りに回転さi element of numbers
せますi element of letters
。
*---*---*---* *---*---*---* *---*---*---*
| 1 | 2 | 3 | -(Print)-> | 2 | 3 | 1 | -(Print)-> | 3 | 1 | 2 |
*---*---*---* *---*---*---* *---*---*---*
したがって、この時点で次のようになります: {(1,a)(2,b)(3,c)}, {(2,a)(3,b)(1,c)}, {(3,a)(1,b)(2,c)}
、3 つがありません。
を動的配列のi element
と交換します。n element
*---*---*---* *---*---*---*
| 1 | 2 | 3 | ---------( Swap (0<->2) )-------> | 3 | 2 | 1 |
*---*---*---* *---*---*---*
手順 3 を繰り返します。
*---*---*---* *---*---*---* *---*---*---*
| 3 | 2 | 1 | -(Print)-> | 2 | 1 | 3 | -(Print)-> | 1 | 3 | 2 |
*---*---*---* *---*---*---* *---*---*---*
したがって、欠落したサブセットが得られます: {(3,a)(2,b)(1,c)}, {(2,a)(1,b)(3,c)} and {(1,a)(3,b)(2,c)}
.
例 4 が31234
つ以上ある場合。印刷)、4 と 1 を交換 --> (回転して印刷)。4231
4321
1324
これが役に立ったことを願っています。