C++で基礎DFSを用いて全配列問題を解決する考え方とインスタンスコード

977 ワード

本稿では,C++の基礎DFSアルゴリズムを用いて以下の全配列問題を解決する本人の考え方と実例コードを簡単に紹介する.
コンビネーション配列
タイトルの説明
まず正の整数(1<=n<=10)を与え,すべての全配列を出力する.全配列とは、例えばn=3であり、すべての組合せを出力し、辞書順に出力する.
1 2 3   
1 3 2   
2 1 3   
2 3 1   
3 1 2   
3 2 1   

すべての行を1つずつ並べ、隣接する2つの数をスペースで区切ります(最後の数の後ろにスペースはありません)
入力
1行1整数n.
しゅつりょく
1~nの全配列を出力する.
サンプル入力
3

サンプル出力
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

考え方と実例
#include 
 
using namespace std;
 
int n;
const int N = 15;
int path[N];//    
bool st[N];//  (       ) 
 
void dfs(int x)//x      ,   x   

{
    if(x == n)//       ,     
    {
        for(int i = 0; i < n; i ++){
            cout<>n;
    dfs(0);//         
    return 0;
}

後述する文章では,同じアルゴリズムを用いて組合せ配列と迷路問題を解決する方法を示す.読んでくれてありがとう.