C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM575: TheSwapsDivTwo

スワップの全パターンを試す。

String.Join に String 以外の配列をそのまま渡しても問題ないようだ。

public class TheSwapsDivTwo {
    static public void Swap<T>(ref T a, ref T b) { T t = a; a = b; b = t; }
    public int find(int[] sequence) {
        int n = sequence.Length;
        var set = new HashSet<string>();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {
                Swap(ref sequence[i], ref sequence[j]);
                set.Add(String.Join(",", sequence));
                Swap(ref sequence[i], ref sequence[j]);
            }
        }
        return set.Count;
    }
}