Re:>475
最大値をどうやって計算するかは分かるだろう。
あとは、k_1,…,k_nの与え方だが、
これはk_n,k_{n-1},…,k_2,k_1の順に再帰的に与えればいいのではないか?
n=5のときを例に挙げると、
まず、k_5=1ととり、1*k_1+2*k_2+3*k_3+4*k_4=0になるk_1,k_2,k_3,k_4の組合わせは0,0,0,0しかない。
次にk_5=0ととるとき、1*k_1+2*k_2+3*k_3+4*k_4=5となるk_1,k_2,k_3,k_4を選ぶことを考える。(a)
(a)の中でk_4=1ととり、1*k_1+2*k_2+3*k_3=1となるようにk_1,k_2,k_3を選ぶようにする。(k_1=0,k_2=k_3=0しかない。)
(a)の中で、今度はk_4=0ととり、1*k_1+2*k_2+3*k_3=5となるようにk_1,k_2,k_3を選ぶ。(b)
(b)の中で、k_3=1ととると、(k_2,k_1)=(1,0)と(k_2,k_1)=(0,2)となる。
(b)の中で、k_3=0ととると、k_2=2,1,0の3通りにわかれる。
k_2=2ととるとき、k_1=1となり、k_2=1ととるとき、k_1=3となり、k_2=0ととると、k_1=5となる。

この文では分かりにくいかもしれないが、とにかくやってみてくれ。