• 締切済み

数字並び替え全パターン取得のアルゴリズム

例えば5つの数字1,2,3,4,5の並び替えのパターンは5!=120通りあると思うのですが、このパターン全て取得するようなアルゴリズムはどういうものになりますでしょうか。 1,2,3,4,5 1,2,3,5,4 1,2,4,5,3 1,2,4,3,5 続く。。。。 これら並び替えのパターンを全て取得したい。 アルゴリズムの説明、又はアルゴリズムの名前が存在するようであれば教えていただけると幸いです。 実際には1000個程度の数字の並び替えパターン全てを何らかのコンピュータ言語を使い、アルゴリズムを実装したいと思っています。 よろしくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

とりあえず確認だけど, 「1000個程度の数字の並び替えパターン全てを何らかのコンピュータ言語を使い、アルゴリズムを実装したいと思っています」って何をしたいのか読めない文章になっちゃってるんだけど.... 「何をするアルゴリズム」を実装するのか書かれてないよね. あと, 「1000個の数字の並び替えパターン」を全列挙するのは恐ろしく時間がかかるんだけど, 覚悟はできてる? 覚悟ができているなら, 検索すればいくらでも出てくると思うよ. 未確認だけど, 最悪 The Art of Computer Programming を調べれば絶対あると思う. 4 Fascicle2 にありそう.

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

具体的な内容はおいといて、 ツリー構造を使えばできそうかな。

関連するQ&A

  • タイピングゲームの曖昧入力アルゴリズムについて教えてください。

    こんにちは。 タイピングゲームの曖昧入力のアルゴリズムについて教えてください。 あれはどのように実装しているのでしょうか? すべてのパターンを保存しておくというのはさすがにスマートではないと思うので何かしらで判定してると思うのですが、どのように判定すればいいかわかりません。 わかる方お願いします!

  • アルゴリズムについて

    「手作業によるソート」がレポートの課題として出されました。 「手作業のために効率的なアルゴリズムを考えて提案して分析しなさい」 条件は次の通り: 資料がそれぞれ A4 の紙一枚。見やすい位置に10桁の番号が書かれている。その番号の昇順にソートする。番号の分布については一切不明。二つのケースを想定: 1) 一人で資料5000枚をソート; 2) 20人で資料50000枚をソート。二つのケースに使えるアルゴリズム一つ、又は両ケースに使えるアルゴリズム一つでもよい。分析では O() での計算量 (理由つき) と実際に想定される時間。今まで習ったアルゴリズムとの類似点や相違点、手作業の特徴に考量した点などについても論じる。 何をすれば良いのかが分かりません。少しでも作業の道筋を示していただければ幸いです。 よろしくお願いします。

  • 組み合わせパターンについて

    質問です! ExcelのA1からG1のセルに、1から7の数字が入力されています。 A1が1、B1が2・・・G1が7 そこから異なった5つを選びセットを作りたいです。 21通りあることが分かるのですが、全てのパターンをExcelで抽出したいです。 よろしくお願いします。

  • アルゴリズムの学習方法

    次回の試験で基本情報の試験を受けたいと思っています。 すでに、ネットワーク、オラクル、簿記、JAVAなどの資格は持っているので、それに関する午前の対策は必要ありませんでした。 しかし、アルゴリズムや、擬似言語の問題が頭に入ってきません。 具体的には、流れ図を見ても何をしているのかわからないので、答えを見て流れをなんとなく理解しているといった具合です。 まだ慣れていないという事もあるとは思いますが、何をしていけばよいのかわかりません。 過去の質問にも実際にプログラムを作らないと理解できないという事が書いてあるのですが、これはアルゴリズムの問題が ほとんどできていない時期に作るべきものなのでしょうか?(最終的には作る予定ではあります) そこで質問なのですが、 1、順番的にはどのようにこなしていくべきでしょうか? ・アルゴリズムの定石を覚える(交換法などの基礎を整理 数日) ・アルゴリズムの問題を解く(試験問題を解く 1週間) ・CASLで実際にプログラムを作成(文法を覚え簡単なプログラムを作成 2週間) 上記の流れでいくつもりなのですが、これがベストの流れでしょうか? CASLを先にやっておくべきなのかぁとも思っています・・・ 2、午後のアルゴリズム問題はすべて具体的な数値を入れてトレースをして解くのでしょうか? 若しくは頭の中で道筋を立てるだけで、紙に書くようなトレースはしないのでしょうか? アドバイスよろしくお願いします。

  • C言語のソースコードの書き方

    C言語のソースコードの書き方に関する質問です。 0を5個と1を4個の、合わせて9個の数字を並べて出来上がる数列のパターン(126通り)を全て羅列させるプログラムを作りたいと考えていますが、そのためにどういった方針を立ててソースコードを書けばよいかが分かりません。 どういった構造かだけでも構いませんので、教えて頂けると幸いです。 よろしくお願いします。

  • アルゴリズム 教えてください

    必修科目「数学」、選択必修科目「歴史」と選択必修科目「地理」の3科目がある。ある2人の学生に対して「二人とも進級」か「一人が留年」あるいは「二人とも留年」を出力する問題を考える。ただし、進級条件は「必修科目に合格し、かつ2科目の選択必修科目の少なくとも1科目に合格していること」とし、全学生が3科目とも履修しているものとする。 実行結果 ある一人の学生が進級する科目取得パターンを全て書いてください (例) 数学「合格」歴史「不合格」地理「合格」 実行結果 この問題に対するアルゴリズム(手順)のステップを書いてください 実行結果 そのときの最大時間計算量(1点)、領域計算量(1点)をそれぞれ求めよ。 すべて教えていただきたいです。

  • 組み合わせパターンを作りたいのですが、どのようにすれば効率的ですか?

    こんにちは。 現在、以下のアンケートがあります。          選択肢(Aはよい、Bはふつう、Cは悪い) 問1 ××× A B C 問2 ××× A B C 問3 ××× A B C ・ ・ ・ 問11 ××× A B C ここで、問1~問11までの設問全体の組み合わせのパターンがどれだけどんなものがあるのか一気に出したいのですが、どのような方法がありますでしょうか?もし、ソフトがあればご紹介して頂ければ幸いです。 例えば、 パターン1としては、問1~問11までが全てAというパターン、 パターン2としては、問1~問11までが全てBというパターン、 パターン3としては、問1~問11までが全てCというパターン、 パターン4としては、問1~問10まではAで問11だけがBというパターン ・ ・ ・ など、3の11乗パターン存在すると思ってます。 こうしたパターンの一覧表を一気に作りたいのですが、どのようにすればよろしいでしょうか。 ご教示頂ければ幸いです。宜しくお願い申し上げます。

  • エクセルで組合せのパターンを表示したい

    12人から9人を選ぶ組合せのパターンをすべて表示させる 方法はないでしょうか?パターン数はCONBIN関数で220通り と求められました。この220通りを実際に表示させたいの です。エクセル上級者ではないので、簡単なマクロだと 助かりますが、いいアイデアがあれば教えてください。 よろしくお願いします。

  • 組み合わせパターン

    4個(No.1とNo.2とNo.3とNo.4)の荷物があります。 すべて4個同時発送だけ特別できるとして 同時発送できるのは2個までです。ただし同時発送できる荷物は隣の数字のみです。 (例 : No.1とNo.2は同時発送できるがNo.1とNo.3は一緒に発送できない) もちろん単体発送もできます。 すべてで何通りのパターンがありますか。 考えすぎて頭が痛くなってきたのでよろしくお願いします。

  • 組み合わせのパターンを作成する関数

    組み合わせのパターンを作成する関数を作成したいと思っています。 仕様は以下のような感じです。 引数 ・list:材料となる文字の配列 ・len:作成する文字列の数(2以上) 戻り値 ・組合わせた文字列の配列 例 (["a", "b", "c"], 2)→["aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc"] (["a", "b"], 3)→["aaa", "aab", "aba", "abb", "baa", "bab", "bba", "bbb"] 私はとりあえず作成する総パターン数(Math.pow(list.length, len))回ループでまわし、indexをtoStrungでn進数にし(ゼロパディングし)、最後に数字と対応する文字を置換するという方法で実装しました。とりあえず動いています。 しかし他にもいろいろなアルゴリズムが考えられそうなので、他の実装・よりよい方法を知りたいと思いまして質問させていただくことにしました。 できれば具体的なコードを教えていただきたいです。 よろしくお願いします。