完全な配列
説明:
アレイ[1、2、3]のために、それらの完全な配列に応じて小から大になります
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
あなたは正の整数nを与えられ、nは8未満、小から大への完全な配列のアレイ[1、2、...、N]に出力されます。
入力
整数の複数の行を入力します。エンド入力時に入力0。
出力
完全な置換基の各入力および出力のために。各行が1つの可能な配置、n個の整数の合計、空間、各ラインの末尾にスペースで区切られた各整数です。
サンプル入力
2
3
0
サンプル出力
1 2
2 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
トピックリンク:
https://vjudge.net/problem/OpenJ_Bailian-4070
STLの機能に教えます:
int型のnext_permutationの
メインINT()
{
int型[3]、
[0] = 1; [1] = 2; [2] = 3;
DO
{
COUT << [0] << "" < <<< "" << [2] << ENDL [1];
}ながら(next_permutation(A + 3)); //パラメータ3が配置された長さを意味する
場合が存在した後//配置は、それがtrueを返します。順列が最後の後継者ではない場合、falseを戻し、たびに、後継となる
}
出力:
1 2 3
1 3 2。
2. 1. 3
2. 3. 1
3 1 2
3 2 1。
あれば変化(next_permutationながら(+ 2)) ;
出力:
12 3
2 1 3
最初の2つの要素過去ソート辞書
、明らかになら一方変化(next_permutation(+ 1)); のみ出力:12 3
、配列は常に、次に実行next_permutation後、辞書の昇順に配置されるであろう最大の後継、等価循環されない場合
、INTリスト[3] = {3,2,1 }。
next_permutation(リスト、リスト+ 3)。
COUT <<リスト[0] << "" <<リスト[1] << "" <<リスト[2] << ENDL。
//输出:1 2 3
メインINT()
{
int型[3]、
[0] = 1; [1] = 2; [2] = 3;
DO
{
COUT << [0] << "" < <<< "" << [2] << ENDL [1];
}ながら(next_permutation(A + 3)); //パラメータ3が配置された長さを意味する
場合が存在した後//配置は、それがtrueを返します。順列が最後の後継者ではない場合、falseを戻し、たびに、後継となる
}
出力:
1 2 3
1 3 2。
2. 1. 3
2. 3. 1
3 1 2
3 2 1。
あれば変化(next_permutationながら(+ 2)) ;
出力:
12 3
2 1 3
最初の2つの要素過去ソート辞書
、明らかになら一方変化(next_permutation(+ 1)); のみ出力:12 3
、配列は常に、次に実行next_permutation後、辞書の昇順に配置されるであろう最大の後継、等価循環されない場合
、INTリスト[3] = {3,2,1 }。
next_permutation(リスト、リスト+ 3)。
COUT <<リスト[0] << "" <<リスト[1] << "" <<リスト[2] << ENDL。
//输出:1 2 3
ACコード
書式#include <iostreamの> の#include <cstdioを> する#include <fstreamの> の#include <アルゴリズム> 書式#include <cmath> の#include <両端キュー> の#include <ベクトル> の#include <キュー> の#include < 文字列 > の#include <CStringの> 書式#include <マップ> 書式#include <スタック> の#include < 設定 > 書式#include <数値> 使用して 名前空間はstdを、 typedefの長い 長いLL。 int型のn; 一方、(CIN >> N && N!= 0 ) { INT [ 15 ]。 以下のために(int型 i = 0 ; iがn <; iは++ ) [I] = I + 1 。 int型J。 実行 { ため(int型 i = 0 ; iがn <; iは++ ) { // 输出格式、特殊处理 場合(I == N- 1 ) COUT << [I]。 他 COUT<< [I] << " " 。 } COUT << ENDL。 } 一方(next_permutation(+のN))。 } }