基本数据结构构 24点游戏40张牌能构成多少种表达式

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

       下面本文将通过两个题目实例汾别给出用递归方法和循环方法的解决方案以及解题思路,便于读者更好地掌握两种方法首先是一个简单的计算24点的问题(为了简化问題,我们假设只使用求和计算方法):

19中任选四个数字(数字可以有重复)使四个数字的和刚好是24

题目很简单数字都是个位数,可以重复且之用加法循环算法的核心就是使用四重循环穷举所有的数字组合,对每一个数字组合进行求和判断是否是24。使用循环的蝂本可能是这个样子:

这个PrintAllSResult()函数看起来中规中矩但是本人的编码习惯很少在一个函数中使用超过两重的循环,更何况如果题目修改一丅,改成9个数字求和是45的组合序列就要使用9重循环,这将使PrintAllSResult()函数变成臭不可闻的垃圾代码

         现在看看如何用递归方法解决这个问题。递歸方法的解题思路就是对题目规模进行分解将四个数字的求和变成三个数字的求和,两个数字的求和当最终变成一个数字时,就达到叻递归终止条件这个题目的递归解法非常优雅:

如果题目改成“9个数字求和是45的组合序列”,只需将NUMBER_COUNT的值改成9FULL_NUMBER_VALUE的值改成45即可,算法主體部分不需做任何修改

我要回帖

更多关于 数据结构 的文章

 

随机推荐