Linux运维

中软运维机试牛客网

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。每个用例包含二个整数M和N。0<=M<=10,1<=N<=10。

采取递归的思想,分为两种情况,m为苹果数,n为盘子数

设f(m,n)为m个苹果,n个盘子的放法数目,则先对n进行讨论

中软运维机试牛客网

一:当n>m时,必定有n-m个盘子永远空着,去掉它们对摆放方法数目不产生影响,就是将m个苹果分到m个盘子的方法。即:f(m,n)=f(m,m);

二:当nm时,会返回f(m,m),所以最终会达到出口m=0。

#include int fun(int m,int n){ if(m<0 n>10) return -1; if(m==0
n==1) return 1; if(m

求最小公倍数

正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

解析:两数最小公倍数 = 两数之积 / 两数最大公约数

include int Euclid(int a,int b)//欧几里得算法(辗转相除法)求最大公约数{ if(a==0
b==0) return (a+b); if(a==b) return(a); if(a>b) return(Euclid(a%b,b)); else return(Euclid(b%a,a));}int main(){ int a,b; while(scanf(“%d%d”,&a,&b)!=EOF) { int result=a*b/Euclid(a,b); printf(“%d\n”,result); }

Similar Posts

发表评论

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