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.

タイトル  
名前  
Url
コメント