• 締切済み

組み合わせをすべて出力したい

c sharp環境です。 フレームワークは.net 4.5.2になります。 組み合わせを全パターン出力したいと思ってます。 例: A B C 出力したいパターン: A B C A C B B A C B C A C A B C B A 組み合わせが3つであればいいのですが、実際には最大で6つの文字の 組み合わせ全パターンを出力する必要があります。 (文字の数は動的なので、1~6まであります) 例:A B C D E F linqなどを活用すれば簡単にできるものでしょうか? 泥臭くループを続けていく方法しか思い浮かびません。 良いやり方がありましたら、教えてください。 よろしくお願いします。

  • ginfix
  • お礼率34% (330/962)

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

組み合わせじゃなくて、順列ですよね。 Cですが、書いてみました。文字列を値渡しするために、structにしています。 #include <stdio.h> #include <string.h> #define N 6 struct data { char a[N]; }; perm(int n, struct data x, char buf[]){ int i; if(n){ for(i=0; i<N; i++){ if(x.a[i]){ /*その文字が使用済みで無いなら*/ buf[N-n] = x.a[i]; x.a[i] = 0; /*この文字は使用済みにする*/ perm(n-1, x, buf); /*続きをする*/ x.a[i] = buf[N-n]; /*未使用に戻す*/ } } }else{ printf("%s\n",buf); } } main(){ char a[]="ABCDEF"; char buf[N+1]; struct data x; int i; memcpy(x.a, a, N); buf[N] = 0; perm(N, x, buf); } Rubyだと1行です。 ruby -e 'p ["A","B","C","D","E","F"].permutation.to_a'

関連するQ&A

  • VBの組み合わせプログラムについて。

    初めまして。複数部品からなる製品の組立途中の形状パターンを抽出する プログラムを作成しているのですが、良いループが組めず困っています。 例えばA,B,C,Dと4つの文字からなる以下のような組み合わせ作成するループ文を作成したいです。 条件 ・入力文字数は可変します。A,B,C,D→A,B,C,D,E ・組み合わせ内で同じ文字は2度使用されません。 ・A,B,CとB,C,Aは同一とします。 1文字のパターン A B C D 2文字のパターン A,B A,C A,D B,C B,D C,D 3文字のパターン A,B,C A,C,D B,C,D 4文字のパターン A,B,C,D 4文字からなるパターンは全部で14パターンになります。 以上、宜しくお願い致します。

  • Excelですべての組合せ(重複組合せ)を出力するには?

    Excelですべての組合せ(重複組合せ)を出力するには? 次の条件のような場合、Excelですべての組合せ(重複組合せ)をVBAで出力するにはどうしたらいいのでしょうか? 10種類のお菓子の中から、好きなものを3個選んでセットにするとします。 同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓子A」は選んだ順が違うだけで同じ組合せなので、どちらか片方だけにします。 この場合、すべての組合せの数は Excelの関数で求めることができるようで COMBIN(10+3-1,3) = 220 通りあることまではわかりましたが、このすべての組合せの一覧をどのようにして出力したらいいのかがわかりません。 いろいろ検索した結果、順列という方法は見つかりましたが、重複組合せでの方法は見つけることができませんでした。 また、Accessを使っても似たようなことができるのでしょうか? 直積? できれば、3個固定ではなく5個の場合も出来るとうれしいです。 よろしくお願いします。

  • Excelで組み合わせ

    Excel2007で記号の組み合わせの計算がしたいです。パターンの出力と言うんですかね?ちょっとその辺の単語力に乏しいのですが…。 質問させていただきます。 A列、B列、C列、D列の10行目までにアイウエオカキクケコのいずれかがが各セルに入ってます。A列×B列×C列×D列 4個×5個×3個×6個=360通り 何通りでもいいのですが できたパターンをF列に一通りずつ(できるならまとめて一発ででもいいのですが)上から入れていきたいです。全部4文字固定です ご協力お願いします。

  • Excel2007で組み合わせ

    Excel2007で記号の組み合わせの計算がしたいです。パターンの出力と言うんですかね?ちょっとその辺の単語力に乏しいのですが…。 質問させていただきます。 A列、B列、C列、D列の10行目までにアイウエオカキクケコのいずれかがが各セルに入ってます。 この場合は全部で1万通りになるんですがそのパターンをF列に並べてからそのパターンの数をF列の先頭で隣のG列に表したいたいです。 誰か教えて下さい。お願いします。

  • イベントの組み合わせ

    こんにちは。 団体さん同士のイベントの組み合わせの作成方法について困っています。 全10団体、1日に2団体1組で5日工程を決めたいのですが何通りもありキリがありません。 例えば仮に下記の組み合わせのパターン1だとして ・パターン1 1/1 a & b 1/2 c & d 1/3 e & f 1/4 g & h 1/5 i & j ・パターン2(cとdを入れ替えました) 1/1 a & c 1/2 b & d 1/3 e & f 1/4 g & h 1/5 i & j というように若干ずらしつつ全パターンを作りたいと思っています。 今のところ順列や組み合わせでは思った結果を得ることができず、手作業では途方もないです。 何か良い方法はないでしょうか? どうぞお力お貸しください。 よろしくお願いします。

  • Excel2007で組み合わせの計算

    Excel2007で記号の組み合わせの計算がしたいです。パターンの出力と言うんですかね?ちょっとその辺の単語力に乏しいのですが…。 質問させていただきます。 A列、B列、C列、D列の10行目までにアイウエオカキクケコのいずれかがが各セルに入ってます。A列×B列×C列×D列 この場合は全部で1万通りになります。 できたパターンをF列に一通りずつ(できるならまとめて一発ででもいいのですが)上から入れていき、 F列のパターンの入った先頭セルの隣のセルGに10000通りと表したいたいです。 教えて下さい。

  • A~H 4桁 組み合わせパターン 全件リスト

    A, B, C, D, E, F, G, Hのうち4桁(桁数固定, 文字重複可)の組み合わせパターンをExcelなどでリスト化する方法を教えてください。 例 AAAA ABCD

  • n個の要素で出来る順列組み合わせを全て出力するアルゴリズム

    次のようなプログラムをC++で書こうと思っているのですが、 どうも方法が思い浮かびません。 よいやり方、定番のやり方などがありましたら教えてください。 --------------------------------- n個の要素があるとき、 そのn個で出来る順列組み合わせ(計(n!)通り)を全て出力する。 例えばa[4] = {'A', 'B', 'C', 'D'}なら 順列組み合わせは A B C D A B D C A C B D A C D B A D B C A D C B B A C D B A D C B C A D B C D A B D A C B D C A ・ ・ ・ D C A B D C B A の、計24通り

  • 組み合わせをすべて書き出す方法

    評価について検討しています。 4つの観点について評価します。 評価は 「A+」「A」「B」「C+」「C」の5つです。 例えば 最高の場合は 「A+」「A+」「A+」「A+」となり、 最低の場合は 「C」「C」「C」「C」です。 このように4つの評価の組み合わせになります。 組み合わせのみで、順番は違っても同じものとして考えていいです。 いろいろ、紙に書いてみるのですが、評価が5つあるために、すべての組み合わせを書き出すのに苦労しています。 どなたか、よい方法をご存じの方がおられましたら、ぜひお教えください。

  • 「○○通りのパターンがある」の計算のしかた

    よくこの組み合わせは全部で1万通りのパターンが存在するというようなことを聞きますが、 あれの方程式などはあるのでしょうか。 以下の例で説明をお願いします。 1. [a,b,c]の3つだけの文字列を作った時のパターン数 2. 英数字のみのパスワード4桁のパターン数 3. [a,b,c,d,e,f,g]の中から4文字をつかった文字列のパターン数。