程序设计算法设m,n均为自然数,m可表示为一些不超过n的自然数之和,试编写函数f(m,n)计算这种表示方式的数目.例如,

1个回答

  • 我说个方法,你参考下:

    以(8,3)为例:

    首先:8可以看成:1 1 1 1 1 1 1 1

    然后再(1*1*1*1*1*1*1*1)中对*加“+”或者不加:如1*1+1*1*1*1*1*1代表:2+6,又如1*1*1*1+1*1+1+1代表:4+2+1+1

    对于在*中加“+”的种类数,在组合数学里有计算方法,这里我就不说了,假定这里有n种,这里是全部的种类数.

    然后,再对8分成:4 1 1 1 1然后再(4*1*1*1*1)中加“+”,这里为m,这里是不满足条件的种类数.

    那么(8,3)的种类数为:n-m

    注意加“+”的过程是无分类的