组合之分苹果问题(22)[通俗易懂]

组合之分苹果问题(22)[通俗易懂]1问题将n个苹果分给m个人,苹果都一样,人都一样。如果把4个苹果分给3个人,121112211是一种可能。问一共有多少种方法。2分析1当苹果比人数少时,就等同于将等数量的苹果分给等数量的人,因为人数较多,空的人都一样,所以做等效处理。比如2个苹果分给3个人和2个苹果分给2个人结果是一样的。2当苹果数<=人数时,等效于:有人没有苹果和所有人都分到苹果两种可能,然…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1 问题

将n个苹果分给m个人,苹果都一样,人都一样。如果把4个苹果分给3个人,121 112 211是一种可能。

问一共有多少种方法。

2 分析

1 当苹果比人数少时,就等同于将等数量的苹果分给等数量的人,因为人数较多,空的人都一样,所以做等效处理。比如2个苹果分给3个人和2个苹果分给2个人结果是一样的。

2 当苹果数<=人数时,等效于:有人没有苹果和所有人都分到苹果两种可能,然后进行递归。

3 代码

#include <iostream>
using namespace std;

int dfs(int n, int m) {
	//n代表苹果数,m代表人数
	if (n < m)   	//如果苹果比人数少
		return dfs(n, n);    //n个苹果分给n个人
	if (n == 0) 	//没有苹果了
		return 1;
	if (m <= 0)
		return 0;	//没有人了
	int r1 = dfs(n, m - 1); //有人没有分到苹果,至少有一个人没有分到苹果
	int r2 = dfs(n - m, m);	//所有人都分到苹果,相当于每个人至少分到一个苹果
	return r1 + r2;	
}

void test() {
	int n, m;	//n是苹果数,m是人数
	cin >> n >> m;
	cout << dfs(n, m) << endl;
}

int main() {
	test();
	system("pause");
	return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182993.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Cube的高级设置

    Cube的高级设置

    2021年11月24日
    45
  • 161套javaWeb项目源码免费分享[通俗易懂]

    161套javaWeb项目源码免费分享[通俗易懂]最近很多学生在找关于java开发的学生管理系统,学生选课系统,车辆管理系统,商城系统,项目申报系统,教务管理系统,班级管理系统,博客系统。。。。。。。。我找了一些前几年的项目,感觉还行,虽然项目但技术都是一样的,可以用来做课程设计和毕业设计项目参考,但不要完全照搬哦就不再展示了,需要的可以收藏本篇文章,最好可以四连,关注点赞收藏订阅,下载不迷路链接:https://pan.baidu.com/s/1JX3u5v1alDcMpbG8s134AA提取码:wimo…

    2022年7月9日
    86
  • cs架构和bs架构的应用_cs bs区别

    cs架构和bs架构的应用_cs bs区别悬赏园豆:200[已关闭问题]1.如何设计C/S和B/S混合结构?2.采用webservice,B/S端采用C#,C/S端采用C、delphi、VC++,如何进行通信?3.WebService的运行机理:首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(ProxyClass),这个代理类负责与WebService服务器进行Request和Response,…

    2025年10月15日
    6
  • linux生成initramfs,Linux启动过程与initramfs

    linux生成initramfs,Linux启动过程与initramfsLinux启动过程概述这里先简单列一下Linux操作系统启动的全过程:按下电脑的电源键后,电脑通电,BIOS启动;BIOS读取硬盘的MBR,运行启动扇区中的代码,旧系统往往需要自己写启动扇区,而新系统基本上由专用的启动软件接管了,在Linux世界中,目前都是用的Grub2。由于启动扇区空间太小,放不下太复杂的代码逻辑,所以Grub2也使用了多阶段启动的策略;Grub2负责将操作系统…

    2022年8月11日
    6
  • 转:Java中Scanner类和BufferReader类之间的区别

    转:Java中Scanner类和BufferReader类之间的区别

    2021年6月13日
    93
  • java实战——图书管理系统

    因为这个写的比较完整,所以简单说明一下过程中使用的EJB和RMI两个东西。EJB实现原理:就是把原来放到客户端实现的代码放到服务器端,并依靠RMI进行通信。RMI实现原理:就是通过Java对象可序列化机制实现分布计算。好了,没了,就这么简单…想稍微深入了解一下的看一下这个好了,我就不再赘述。https://blog.csdn.net/lovechuanyu/article/…

    2022年4月12日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号