赛时没做出来,丢人了
题目链接:https://acm.nyist.edu.cn/p/871
题目如下:
赛后首先了解到的一种做法是打表找规律,如下:
m\n | 1 | 2 | 3 | 4 |
1 | 1 | 2 | 3 | 4 |
2 | 1 | 3 | 6 | 10 |
3 | 1 | 4 | 10 | 20 |
4 | 1 | 5 | 15 | 35 |
这个时候规律已经很明显了,显然 ans(m,n) = ans(m-1,n) + ans(m,n-1)
而之后才了解到这道题的正解应是高中学的排列组合的一种方法——隔板法。
什么是隔板法呢?(让我们回忆一下)
把 m 个球分成 n 份儿,问有几种分法,这就是典型的隔板法例题。
方法很简单,把 m 个球摆成一排,两两之间存在缝隙,一共有 m-1 个缝隙,在 m-1 个缝隙中挑 n-1个缝隙用板子隔开,就可以把 m 个球分成 n 份儿了,答案也就是 .
那么,求 x+y+z=n 的正整数解的个数,可以看做是求把 n 个球分成三份的分法。
而校赛这道题是要求多元一次方程不同非负整数解的个数,显然非负也就意味着可以是0
这个时候怎么用隔板法呢?
我们可以这样,把原方程看做是求 (+1)+(
+1)+...+(
+1)=m+n 的非负整数解的个数。
这样,对于每一个元素 (+1) 就是一个正整数,那么用隔板法把 m+n 分成 n 份儿,这 n 份儿的分法个数就为
,也就是本题的答案。
那么我们开始找的规律是怎么来的呢?这就要提到下面的公式了:
它们有什么关系呢?
由隔板法可知 ans(m,n) =
又有 ans(m,n) = ans(m-1,n) + ans(m,n-1)
可得
这么一推,笔者对排列组合有了更深的了解,希望以后碰到类似的题不会再出错了。