数学的力量(一)

最近看一些数学方面的书,包括概率论、数理统计、随机过程、组合数学等,发现数学这个工具威力绝对是无穷的,若在编程中融入数学的一些思想,程序的运行效率会的得到前所未有的提升。遂将这些读书中的感想写成心得,起名曰“数学的力量”。

 

首先让我们从一个很简单的问题说起:

有方程a+b+c+d+e=20,求其非负整数解的个数。

题目很简单,首先想到的是使用回溯进行求解,遍历整个解空间数,对可行解进行计数,很容易就能得出答案。

 
 
解空间示意图如下,程序太简单所以就不多说了。
一共4层节点(前abcd确定了之后e也就确定了),每层最多16个,所以需要遍历的节点数最多也就是60000多个节点,正常情况下运行几个毫秒就运行完了,可以说还算是解决这个问题还不错的方法。(我画图的时候把0给忘了,算了,意思表达出来就行了)
 
好,接下来让我们使用数学的方法来解决这个问题。
首先这个问题等价成以下描述:
我有a,b,c,d,e五种商品若干,现在要从中选出20个商品,问共有多少种选法。
典型的多重集组合问题,直接用其公式C(n+r-1,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值