前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >华为OJ:2041 放苹果

华为OJ:2041 放苹果

作者头像
全栈程序员站长
发布2022-07-10 10:26:16
2690
发布2022-07-10 10:26:16
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

这道题难点不在于代码怎么写,而是思路怎么想。

感觉一般这样的题要么你理好一个思路要么你最后总结出一个公式,要么你自己模拟它的运作方式,用迭代,或者递归的方式来做。

有点像我们曾经学的排列组合。

对于m个苹果。n个盘子f(m,n)。假设苹果个数比盘子少,那么就跟n个盘子,n个苹果是一样的f(n,n)。假设m比n大。那么有两种情况,一种有空盘子的情况。一种没有空盘子的情况,两种情况不重叠且加一起一定为情况总数。

第一种情况就即为n个盘子放在m-1个盘子里,由于至少有个空盘子。

f(m。n-1),另外一种情况下,每一个盘子都有一个苹果了,就相当于f(m-n,n),m扣掉n个苹果再放到n个盘子里。得到递归式f(m,n)=f(m,n-1)+f(m-n,n)。

代码语言:javascript
复制
import java.util.Scanner;
public class MNAPPPLE {
	public static int fways(int m,int n){
		if(m==0||n==1)return 1;
		if(m<n)return fways(m,m);
		else return fways(m,n-1)+fways(m-n,n);
	}
	
	public static void main(String args[]){
		Scanner input=new Scanner(System.in);
		int m=input.nextInt();
		int n=input.nextInt();
		System.out.println(fways(m,n));
	}
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档