2014 年普及组初赛整理

这篇博客介绍了如何解决将一定数量的球放入相同袋子的问题,通过列举不同放置方式来求解。文章通过具体例子展示了如何按照有球袋子数进行分类列举,并给出了C++代码实现。同时,还涉及到递归函数的应用和最大子矩阵和的计算方法,包括相关代码示例。
摘要由CSDN通过智能技术生成

把 MM 个同样的球放到 NN 个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的放置方法?(用 KK 表示)。

例如, M=7M=7,N=3N=3 时,K=8K=8;在这里认为 (5,1,1)(5,1,1) 和 (1,5,1)(1,5,1) 是同一种放置方法。

问:M=8M=8,N=5N=5 时,K=K=__18__

使用列举法解决,注意做到不重、不漏。建议按照有球袋子数分类列举,每种方案严格按照非降排列(省略空袋子):

11 个有球的袋子:(8)(8)

22 个有球的袋子:(1, 7)(2, 6)(3, 5)(4, 4)(1,7)(2,6)(3,5)(4,4)

33 个有球的袋子:(1, 1, 6)(1, 2, 5)(1, 3, 4)(2, 2, 4)(2, 3, 3)(1,1,6)(1,2,5)(1,3,4)(2,2,4)(2,3,3)

44 个有球的袋子:(1, 1, 1, 5)(1, 1, 2, 4)(1, 1, 3, 3)(1, 2, 2, 3)(2, 2, 2, 2)(1,1,1,5)(1,1,2,4)(1,1,3,3)(1,2,2,3)(2,2,2,2)

55 个有球的袋子:(1, 1, 1, 1, 4)(1, 1, 1, 2, 3)(1, 1, 2, 2, 2)(1,1,1,1,4)(1,1,1,2,3)(1,1,2,2,2)

故总方案数为 1 + 4 + 5 + 5 + 3 = 181+4+5+5+3=18。

#include <iostream>
using namespace

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值