TopCoder

問題

<p>
  int型配列が与えられる。 2個の数値の位置を入れ替える場合、得られるユニークな数列が何通りあるか.
</p>

方針

全通り swapしてみて、ユニークな数列の数を数える.

回答

[sourcecode language="python" title="" ] class TheSwapsDivTwo: def find(self, sequence): s = set() n = len(sequence)

<p>
  for i in range(n - 1): for j in range(i + 1, n): l = list(sequence) l[i], l[j] = l[j], l[i] s.add(tuple(l))
</p>

<p>
  return len(s) [/sourcecode]
</p>