组合数学

组合数学问题在信息学竞赛中的应用

组合数学是一个很灵活的东西,它需要一定的训练量和思路。
第一种题型
我们需要把题目所求的推出一个式子,然后用代码去实现。
第二种题型
我们不一定能有一个式子,但我们可以找到一个递推式一样的东西。
比如
这算是一种模型,一些细节的变化可能会在与盘子和苹果相不相同上。
我们在做这种题目的时候,往往采取递归的方法,分两种情况进行思考。一种是苹果数量多与盘子数量,考虑放弃一个盘子,或者每个盘子放一个苹果。
另一种是苹果数量n少于盘子数量m,其实最多只有苹果个数量的盘子起了作用,那么就递归(n,m),最后设置边界条件。

int solve(int n,int m){
	if(m==0) return 0;
	if(n==0||m==1||n==1) return 1;
	if(n<m){
		return solve(n,n);
	}
	else{//n>m
		return solve(n-m,m)+solve(n,m-1);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值