C趣味编程百例(32)满足特异条件的数列

C趣味编程百例(32)满足特异条件的数列,第1张

C趣味编程百例(32)满足特异条件的数列,第2张

97.满足特异条件的数列
输入m和n(20>=m>=n>0)求出满足以下方程的正整数数列 i1,i2,...,in,使得:i1+i1+...+in=m,且i1>=i2...>=in。例如:
当n=4, m=8时,将得到如下5 个数列:
5 1 1 1 4 2 1 1 3 3 1 1 3 2 2 1 2 2 2 2
*问题分析与算法设计
可将原题抽象为:将M分解为N个整数,且N个整数的和为M,i1>=i2>=...>=in。分解整数的方法很低多,由于题目中有"i1>=i2>=.....>=in,提示我们可先确定最右边in元素的值为1,然后按照条件使前一个元素的值一定大于等于当前元素的值,不断地向前推就可以解决问题。下面的程序允许用户选定M和N,输出满足条件的所有数列。
*程序与程序注释
#include
#define NUM 10 /*允许分解的元素数量*/
int i[NUM]; /*记录分解出的数值的数组*/
void main()
{
int sum,n,total,k,flag,count=0;
printf("Please enter requried terms(

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C趣味编程百例(32)满足特异条件的数列

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情