我们先来看这样一个生活问题:
你手头有1个1元,一个2元,一个3元(假币!!)和一个4元(这是哪个国家的题啊....),之后你会很好奇你能用这些钱组合成多少种数目。
很小学的问题,只要我们稍微那笔枚举一下就能知道,我们能得到0-10元之间所有的钱数。
现在,我们用函数去表示一下每个钱,1元就表示为1+x,2元表示为1+x^2,3元表示为1+x^3,4元表示为1+x^4,也就是说,我用x的指数表示我的钱数。
so....我们将这四个式子相乘
(1+x)(1+x^2)(1+x^3)(1+x^4)
=(1+x+x^2+x^3)(1+x3+x^4+x^7)
=1+x+x^2+2x^3+2x^4+2x^5+2x^6+2x^7+x^8+x^9+x^10
可以看出来,x的指数由0到10全部都有,说明能凑出0-10元间所有的钱数,而前面的系数,就是你凑出该钱数的方案数。
这是为什么呢?
我们是用指数作为了钱数,而指数乘积是相加,所以,我3元的x^3和4元的x^4相乘也就是这两个钱凑在了一起x^7表示的7元,而多项式的系数则表示你凑成的x^n有多少项,也就是多少种方案,如果这个不好理解,我们举个简单的例子。
你有一块钱,还有1块钱(注意,这两个一块是不一样的哦~),你能凑成yi块的方案数,很明显是2吧,我们用函数方法做一下:
(1+x)(1+x)=1 + x + x + x^2 = 1 + 2x + x^2,x的系数是2。
这就是生成函数。
我们来看一道类似的问题
小明去买一个6元的切糕(糕富帅....)他手头有1元,2元,3元(肯定是国外的小明了),每个钱的张数无限(果然是糕富帅)....不过,小明为了低调些,所以他要正好拿6元钱出门,于是,糕富帅就好奇了,他有多少种方案呢???
结合上面的问题,我们知道1元,因为无数个,所以我们能得到2*1元,3*1元,4*1元,.....于是,1元所能表示的不再单单是1+x,而是1+x+x^2+x^3+x^4......,而2元只能往上表示4元,6元,8元.....所以是1+x^2+x^4+x^6.......同理,3元为1+x^3+x^6+x^9.....