一般此类问题可以看做是一个背包问题,不过有更优秀的解法。
###1.数字互不相同(51nod1201)( O ( n n ) O(n \sqrt {n}) O(nn))
注意到最多有 O ( n ) O(\sqrt{n}) O(n)个数相加,则记 f i , j f_{i,j} fi,j表示 j j j个数和为 i i i的方案数。我们讨论一个方案的最小值是否为1,如果为1,则 f i − 1 , j − 1 → f i , j f_{i-1,j-1} \rightarrow f_{i,j} fi−1,j−1→fi,j,否则我们把每一个数减去1, f i