求算法 分苹果问题输入M N ,M个苹果放到N个篮子里 可以有空篮子 并且122和212算一种放法问一共多少种放法 不需要代码 只要告诉我算法就可以了 谢谢啦

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 09:32:09
求算法分苹果问题输入MN,M个苹果放到N个篮子里可以有空篮子并且122和212算一种放法问一共多少种放法不需要代码只要告诉我算法就可以了谢谢啦求算法分苹果问题输入MN,M个苹果放到N个篮子里可以有空篮

求算法 分苹果问题输入M N ,M个苹果放到N个篮子里 可以有空篮子 并且122和212算一种放法问一共多少种放法 不需要代码 只要告诉我算法就可以了 谢谢啦
求算法 分苹果问题
输入M N ,M个苹果放到N个篮子里 可以有空篮子 并且122和212算一种放法
问一共多少种放法
不需要代码 只要告诉我算法就可以了 谢谢啦

求算法 分苹果问题输入M N ,M个苹果放到N个篮子里 可以有空篮子 并且122和212算一种放法问一共多少种放法 不需要代码 只要告诉我算法就可以了 谢谢啦
算法说明太复杂,后面给你代码.简单说明:
122 212 221是同种方法,则取代表 221
123 .321 是同种方法,则取代表 321
能当“代表”的组合的特点是,前面的不小于后面的.
这是一个限制条件.
想来想去用递归最好.
比如10个放入3个篮子,变成:
第一个放10,再把0个放入剩余2个篮子
第一个放9,再把1个放入剩余2个篮子
第一个放8,再把2个放入剩余2个篮子
第一个放7,再把3个放入剩余2个篮子
.
总之,M个苹果,N个篮子,
第一个放a个,a的范围是从M减小到0,
而再将(M-a)个苹果放入N-1个篮子.
但是放的时候要一定满足“前面的不小于后面的”.
代码:
#include
void PutApple(long nRemainApple, long nRemainBasket,
long nLevel, long nAllLevel, long * npBuffer,
long nLimit, long * npSum)
{
long k;
if (nLevel == nAllLevel-1)
{
if (nRemainApple =0; k--)
{
npBuffer[nLevel]=k;
PutApple(nRemainApple-k, nRemainBasket-1,
nLevel+1, nAllLevel, npBuffer, k, npSum);
}
}
main()
{
int nApple = 10;
int nBasket = 3;
printf("Please input apple count:");
scanf("%d", &nApple);
printf("Please input basket count:");
scanf("%d", &nBasket);
if (nApple200)
return 0;
if (nBasket30)
return 0;
long * npBuffer = new long [nBasket];
long nCount=0;
PutApple(nApple, nBasket, 0,
nBasket, npBuffer, nApple, &nCount);
delete []npBuffer;
printf("Count = %d\n", nCount);
return 0;
}
对10个苹果,3个篮子,运行结果:
Please input apple count:10
Please input basket count:3
10 0 0
9 1 0
8 2 0
8 1 1
7 3 0
7 2 1
6 4 0
6 3 1
6 2 2
5 5 0
5 4 1
5 3 2
4 4 2
4 3 3
Count = 14
Press any key to continue

求算法 分苹果问题输入M N ,M个苹果放到N个篮子里 可以有空篮子 并且122和212算一种放法问一共多少种放法 不需要代码 只要告诉我算法就可以了 谢谢啦 【问题描述】输入2个正整数m和n(m>=1,n 还有这样一个问题:输入2个正整数m和n(m>=1,n 还有这样一个问题:输入2个正整数m和n(m>=1,n 还有这样一个问题:输入2个正整数m和n(m>=1,n 输入2个正整数m和n,计算m!+n!. C语言:求m!+n!之和【问题描述】输入2 个正整数m 和n,计算m!+n!。【输入形式】从键盘输入正整数m和正整数n.【输入输出样例1】(下划线部分表示输入)Enter m:3Enter n:8+8!=40326【样例说明】 关于求最大公约数算法的问题书上是说:1.输入m、n(m为被除数,n为除数)2.m/n得余数r.3.判断r=0?是的话n为最大公约数.4.否则讲n赋给m,r赋给n,循环2.我想问为什么能这么做?(为什么能用除数除 C语言编程中,求两个数的最大公约数和最小公倍数算法是怎样的输入两个正整数m n求最大公约数和最小公倍数(解释一下算法)谢谢 输入m,n,100 用欧几里得算法(辗转相除法)求最大公约数,C语言编程#include #include int main(){int m,n,a,p,q,r;printf(输入两个正整数);scanf(%d,%d,&m,&n);p=m;q=n;if(m 如何求M个数的第N个全排列?C语言程序设计的算法? 懒得自己查……C语言猴子分苹果问题,内详有1堆苹果共 m 个,由 n 只猴子按个数平均分配.每次到达苹果堆放地的猴子只有1只,而且每个猴子都会平均分 1 次苹果.第1个到达的猴子将苹果平均分 C语言:《求m~n间的所有素数》【问题描述】输入两个正整数m和n(m≥1,n≤500),输出m和n之间的所有素数,每行输出6个。素数是指只能被1和自身整除的正整数,最小的素数是2。【输入输 寻找素数 pascal问题描述:已知 N 和 M 两个正整数,求 N 至 M 之间(包括 N 和 M)有多少个素数.输入:共一行:两个正整数数 N 和 M,中间以一个空格隔开.输出:一个正整数:表示 N 至 M 之间(包 /*2.【问题描述】 输入2 个正整数m 和n(m≥1,n≤500),统计并输出m 和n 之间的素数的个数以及这些素数的/*2.【问题描述】输入2 个正整数m 和n(m≥1,n≤500),统计并输出m 和n 之间的素数的个数以及 vb求m+mm+mmm+...+mm...mmm(n个m)要求 n ,m值 用 inputbox输入Dim m%,n%,i%,j%,a(0 To 9999999) As IntegerPrivate Sub Form_Click()m = InputBox(请输入m值 )n = InputBox(请输入n值 )For i = n To 0 Step -1a(n) = a(n) + 10 ^ (i - 1)Next iPrin C语言:输入m,求n.使n!