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

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


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 织梦dedecmsV5.7联动类型无法显示的处理方法

    织梦dedecmsV5.7联动类型无法显示的处理方法

    2021年10月7日
  • 文件读写

    文件读写

    2021年11月19日
  • log4cpp 使用完全手册「建议收藏」

    log4cpp 使用完全手册「建议收藏」原文链接 点击打开链接一、log4cpp概述     Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下:提供应用程序运行上下文,方便跟踪调试;可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等;可以动态控制日志记录级别,在效率和功能中进行调整;所有配置可以通过配置文件进行动态调整;多语言支持,包括Ja…

    2022年7月13日
  • java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]

    java tasklist_java 调用 cmd 中的 tasklist 来获取特定进程的PID[通俗易懂]//显示进程Processprocess=Runtime.getRuntime().exec(“tasklist”);Scannerin=newScanner(process.getInputStream());while(in.hasNextLine()){Stringp=in.nextLine();//打印所有进程System.out.println(p);if(p.contain…

    2022年6月2日
  • java获取string字符串长度_java判断字符串长度

    java获取string字符串长度_java判断字符串长度网络数据的基本单位总是字节,JavaNIO提供了ByteBuffer作为它的字节容器,但是其过于复杂且繁琐。Netty的ByteBuffer替代品是ByteBuf,一个强大的实现,即解决了JDKAPI的局限性,又为网络应用程序的开发者提供了更好的API。1、ByteBuf的APINetty的数据处理API通过两个组件暴露——abstractclassByteBuf和interface…

    2022年9月16日
  • java事务总述_什么是先总述后详述

    java事务总述_什么是先总述后详述java事务总述一、java事务概述1.1、java事务简述1、简介事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列SQL操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。如果任何一个SQL操作失败,那么整个操作就都失败,所有操作都会回滚到操作前状态,或者是上一个节点。2、java事务和数据库事务的关联实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因

    2022年8月31日

发表回复

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

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