モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

深さ優先探索 DFS および順列 STL next_permutation による全探索

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2016/07/01
最終更新最終更新
2018/11/05
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    Spring Bootでの実用的な機能をわかりやすく解説中

    0
    ステッカーを贈るとは?

    サンプルコード

    #include <iostream>
    #include <algorithm> // next_permutation のため。
    using namespace std;
    
    const int MAXN = 1024;
    
    bool used[MAXN];
    int perm[MAXN];
    int perm2[MAXN];
    
    // 表示用関数
    void display(int* ptr, int n) {
        for(int i = 0; i < n; ++i) {
            cout << ptr[i] << " ";
        }
        cout << endl;
    }
    
    // 再帰関数による全探索 (深さ優先探索)
    void permutation(int pos, int n) {
        if(pos == n) {
            display(perm, n);
            return;
        }
        for(int i = 0; i < n; ++i) {
            if(!used[i]) {
                perm[pos] = i;
                used[i] = true;
                permutation(pos + 1, n);
                used[i] = false;
            }
        }
    }
    
    // std::next_permutation による全探索 (順列の生成)
    void permutation2(int n) {
        for(int i = 0; i < n; ++i) {
            perm2[i] = i;
        }
        do {
            display(perm2, n);
        } while(next_permutation(perm2, perm2 + n));
    }
    
    int main() {
        permutation(0,3); cout << endl;
        permutation2(3);
        return 0;
    }
    

    出力例

    $ g++ -Wall -O2 main.cpp && ./a.out
    0 1 2 
    0 2 1 
    1 0 2 
    1 2 0 
    2 0 1 
    2 1 0 
    
    0 1 2 
    0 2 1 
    1 0 2 
    1 2 0 
    2 0 1 
    2 1 0 
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    Spring Bootでの実用的な機能をわかりやすく解説中

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事