ほぼ静的な計画法

競技プログラミングで解いた問題の解法とコードを晒していくページ。ややマイナーなC♯。

AOJ 0030 (Sum of Integers : 整数の和)

【問題】

https://onlinejudge.u-aizu.ac.jp/problems/0030

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0030

【解説】

0~9までの整数までの中からn個選び、和がsになる組み合わせの個数を求める問題。最大でも\( \displaystyle {}_{10} \mathrm{ C }_{5} = \frac{10!}{5!×5!} = 252\)個の中からの探索にしかならないため、全ての組み合わせを探索し、sと一致する個数をカウントしていけば十分間に合う。

組み合わせの探索については、0~9までの数の中から、使用していないものの集合を再帰的に取り出していき、指定の個数とりだした場合はIEnumerableを返すようにして探索している。(関数GetCombination参照)

【コード】