考虑通过加一些小于或等于m的数字来得到所有结果为n的方式。正如你所说,我们将其称为p(n,m)。例如, p(7,3)=8,因为有以下8种方法可以用小于3的数字使7变成:(为简单起见,我们可以假设总是按从大到小的顺序添加数字)
现在我们可以将这些组合分为两组:
1. 第一个元素等于m的组合(在我们的例子中为=3):
- 3+3+1
- 3+2+2
- 3+2+1+1
- 3+1+1+1+1
2. 第一个元素小于m的组合:
- 2+2+2+1
- 2+2+1+1+1
- 2+1+1+1+1+1
- 1+1+1+1+1+1+1
由于p(n,m)的每个成员都可以属于Group1或Group2,我们可以说p(n,m)=size(Group1)+size(Group2)。现在,如果我们证明size(Group1)=p(n-m,m)和size(Group2)=p(n,m-1),通过代入我们可以得到p(n,m)=p(n-m,m)+p(n,m-1)。
证明size(Group1)=p(n-m, m)
:
根据以上定义,p(n-m, m)
是通过添加一些小于或等于m
的数得到n-m
的方式数。
- 如果将
m
附加到p(n-m, m)
的每个组合中,结果将是Group1的成员。因此,p(n-m, m) <= size(Group1)
- 如果从Group1的每个成员的第一个
m
中删除,结果将得到p(n-m, m)
的组合。因此,size(Group1) <= p(n-m, m)
=> size(Group1) = p(n-m, m)
。在我们的例子中:
Group1 <===对应===> p(4, 3) :
- 7=3+
3+1
<===========> 3+1
=4
- 7=3+
2+2
<===========> 2+2
=4
- 7=3+
2+1+1
<=======> 2+1+1
=4
- 7=3+
1+1+1+1
<===> 1+1+1+1
=4
因此,p(n-m,m)
的任何成员都与Group1存在一一对应关系,它们的大小相等。
证明size(Group2)=p(n, m-1)
:
根据定义,p(n,m-1)
是通过添加一些小于或等于m-1
(小于m
)的数字来得到n
的方式数。如果您重新阅读Group2的定义,您会发现这两个定义彼此相同。=> size(Group2) = p(n, m-1)
p(n,m)
的递归关系,但是您忘记给出该函数的组合定义!这不是一个公平的要求。 - Colonel Panic