组合之分苹果问题(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode php 代码提示 自动完成

    vscode php 代码提示 自动完成原来一直用phpstorm感觉挺强大的,但phpstorm是收费的,很麻烦。现在用vscode,发现代码提示功能比phpstorm还要强大,还要好用。php相关插件:PHPIntelephense:代码提示插件TabNine:AI代码提示,非常强大,它支持23种编程语言、5种编辑器PHPNamespaceResolver:PHP命名空间解析器;可以导入和扩展类;PHPDocBlocker:注释自动生成器,/**回车?优秀,必装。…

    2022年9月1日
    17
  • RGB图像深度_DⅴD图像一分为二是什么原因

    RGB图像深度_DⅴD图像一分为二是什么原因RGBD=RGB+  DepthMapRGB:RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。 DepthMap:在3D计算机图形中,DepthMap(深度图)是包含与视点的场景对…

    2022年9月18日
    1
  • navicat最新激活码_通用破解码

    navicat最新激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    204
  • 微信 自动回复 机器人_python控制微信

    微信 自动回复 机器人_python控制微信1.python实现微信机器人自动回复#源代码如下:importjsonimportitchatimportrequestsimportre#机器人接口调用defgetHtmlText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturnr

    2022年9月1日
    4
  • 存款利息的计算。有1000元,想存5年

    存款利息的计算。有1000元,想存5年存款利息的计算 有 1000 元 想存 5 年 可按以下 5 种方法存 1 一次存 5 年期 2 先存 2 年期 到期后将本息再存 3 年期 3 先存 3 年期 到期后将本期再存 2 年期 4 存 1 年期 到期后将本息再存 1 年期 连续存 5 次 5 存活期存款 活期利息每一季度结算一次 2007 年 12 月的银行存款利息如下 1 年期定期存款利息为 4 14 2 年期定期存款利息为 4 68 3 年期定期存款利息为 5 4

    2025年11月17日
    3
  • java integer最大值_java int型最大值/最小值,最大值+1,最小值-1

    java integer最大值_java int型最大值/最小值,最大值+1,最小值-1java中,int型变量是有符号整形变量。int型变量占用4个字节(32bit位)。int型变量采用补码形式来表示数值。对于一个二进制数,正数的补码是其本身,负数的补码是所有二进制位取反再加一。int变量中,第一位是符号位(0表示正数,1表示负数)。我们下面来实际分析int型中正数和负数是怎么表示的。5数字为正数,第一位符号为是0,正数5的二进制码是000000000000101,补码还是…

    2025年10月5日
    2

发表回复

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

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