C++で順列を全パターンを列挙する
こんにちは、@kz_moritaです。
最近はサーバーサイドエンジニアとして、久しぶりに DB の設計やサーバーの API を実装したりしています。直近 2,3 年はずっとスマホアプリのクライアント側のエンジニアをしていたのでとても新鮮な気分です。
また、プライベートでは競技プログラミングに取り組んでいます。 今回のその中で勉強になった順列を全列挙する方法について簡単に紹介します。C++ を用いてこんなにシンプルに実装できるとは思いませんでした。
順列とは 今回実現したいのは、{ 0, 1, 2, 3, 4 } のような列が与えられた時に以下のような全ての並び方を列挙することです。
0 1 2 3 4 0 1 2 3 4 0 1 2 4 3 0 1 3 2 4 0 1 3 4 2 0 1 4 2 3 0 1 4 3 2 0 2 1 3 4 ... .. . 4 3 2 1 0 与えられる列が、固定であれば純粋に要素分ループすればよいのですが、(上記の例だと 5 重ループすればよい)