R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

順列生成メソッド

必要があったので作ってみた。

順列生成メソッド

意外に難しかった・・・

自分で書き出しながら、生成ロジックを作った・・・

再帰使えばいいんじゃん、ってことに気づくのに時間がかかった・・・


#region GetPermutation
/// 順列生成
/// 対象文字列
/// 生成された組合せ
/// 同一文字が含まれていた場合は同じ組み合わせパターンが複数含まれます
static public string[] GetPermutation(string value) {
    var list = new List();
    GetPermutation(value.ToCharArray(), value.Length, list);
    return list.ToArray();
}
static private char[] GetPermutation(char[] value, int count, List list) {
    if (count <= 1) {
        list.Add(String.Join(String.Empty, value.Cast().ToArray()));
        return value;
    }
    var j = count - 1;
    for(var i = j; i >= 0; --i) {
        SwapChar(value, i, j);
        value = GetPermutation(value, j, list);
        SwapChar(value, i, j);
    }
    return value;
} 
static private void SwapChar(char[] value, int index1, int index2) {
    var t = value[index1];
    value[index1] = value[index2];
    value[index2] = t;
}
#endregion

これを使って以下のようにすると、abc の組み合わせが全て表示される。

 foreach(var x in GetPermutation("abc")) Console.WriteLine(x);

abc
bac
acb
cab
cba
bca


こんな処理が何故必要になったかというと・・・

いや、話せば長くなるので来週の月曜日に改めてエントリーにあげたいと思います。

投稿日時 : 2008年7月18日 17:26

Feedback

# re: 順列生成メソッド 2008/07/18 23:07 επιστημη

...なしてトラックバック飛ばんのぢゃろ。
http://blogs.wankuma.com/episteme/archive/2008/07/18/149647.aspx

# re: 順列生成メソッド 2008/07/19 1:00 かるあ

テストケースとか

# re: 順列生成メソッド 2008/07/22 13:20 R・田中一郎

そうかー。
確かにテストで使えますね。

# re: 順列生成メソッド 2008/07/22 22:50 Gushwell

僕も書いてみました。
http://blog.livedoor.jp/gushwell/archives/51577953.html

ところで、Swapの戻り値は void ですよね。

# re: 順列生成メソッド 2008/07/23 10:00 taguo

同じく書いてみました。
http://d.hatena.ne.jp/taguo/20080722/1216745650
トラックバックが飛ばなかったみたいでした。

# re: 順列生成メソッド 2008/07/23 13:23 R・田中一郎

Gushwell さん

>ところで、Swapの戻り値は void ですよね。

あっ、しまった^^;
戻す必要はありませんよね。

-----------------------------
taguo さん

>同じく書いてみました。

これは面白いですね。
僕も後でいろいろいじってみようかな。

# いろんな意味でおめでたいですな 2008/07/30 13:47 R.Tanaka.Ichiro's Blog

いろんな意味でおめでたいですな

# rQXjzVKvWGkS 2011/12/26 23:37 http://www.discreetpharmacist.com/ger/index.asp

Comrade kill yourself.

# dJjwrKFEiIORQ 2011/12/27 0:20 http://www.discreetpharmacist.com/ger/index.asp

It's straight to the point! You could not tell in other words! :D

# TtAGGQCqvQkTnEje 2011/12/27 6:24 http://www.laurenslinens.com

Yeah? I read and I understand that I do not understand anything what it is about:D

# ZrNSXbQoXG 2011/12/27 6:32 http://www.67wine.com/

I do`t regret that spent a few of minutes for reading. Write more often, surely'll come to read something new!...

# yZkqfRCtxw 2012/01/06 22:23 http://www.luckyvitamin.com/c-1153-vitamin-e-formu

Honestly, not bad news!...

# バーバリーブルーレーベル 2012/11/06 15:02 http://burberry.suppa.jp/

今日は~^^またブログ覗かせていただきました。よろしくお願いします。

# xWZOTXHpqsIptFQeIz 2015/05/03 4:00 horny

UOgv7r http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

# BuwvhNtaLgRf 2015/05/19 13:33 Leland

We've got a joint account http://www.smhv.nl/geregistreerden tadacip 5 mg Extra security has been laid on at the five star King David Hotel in Jerusalem as delegations arrived for the second round of Middle East Peace talks. Both sides are remaining cautious about breakthroughs.

# VzpUbZWTcGz 2015/05/19 13:33 Rocco

magic story very thanks http://www.oliver-sinz.de/shop/ ordering priligy online "What they have has worked for the past and led to somepretty profitable businesses, but when people are aligned withcertain goals they may not be thinking the right way for thefuture," David Smith, an analyst with industry research firmGartner said on Monday about the widely expected reorganization.

# MAGARKxqoSj 2015/05/19 13:33 Marquis

A Second Class stamp http://www.jmktrust.org/about/ is it safe to buy priligy online Both devices go "beyond HD" with exceptional pixel density &ndash; the 7-inch version has 323 pixels per inch (ppi) and the 8.9-inch version has 339 ppi. They also feature reduced glare, dynamic image contrast, and improved brightness for better viewing in any lighting conditions, according to Amazon.

# 誕生日 2021/11/15 6:48 hcrrkwoqhyx@hotmail.co.jp

日本的な人気と信頼を得ています。
安心、安全にお届けします
価格、品質、自信のある商品を取り揃えておりますので、
当店の主要な経営のブランド:ヴィトン シャネル ロレックスなど.
当店は主に経営する商品:かばん.バッグ .財布 .キーケース. .腕時計など.
日本には無い商品,日本では高価な商品,弊社のない商品,取引先を代理して製造会社を連絡することができる.
弊社長年の豊富な経験と実績があり.輸入手続も一切は弊社におまかせできます.ご希望の商品を責任を持ってお届けします.
当店の商品は特恵を与える。興味あれば、是非ご覧下さい
財布、腕時計、バッグ一品市場

# A品シャネル 2021/11/22 3:12 ycuhexkt@msn.com

沖縄からの注文でしたが二日で届いて早さに驚きました。
今回ルイヴィトンのカデナ新品を頼みましたが、あまり期待はしていませんでした。(安すぎるからです)
しかし届いて物はきれいでした。
非常に満足です。ありがとうございました。

タイトル
名前
Url
コメント