设为首页 加入收藏

TOP

C++满足特异条件的数列
2014-11-01 17:00:09 来源: 作者: 【 】 浏览:64
Tags:满足 特异 条件 数列

  当前位置:首页>挖经验>题库中心>C/C++语言程序百例>97.满足特异条件的数列


  97.满足特异条件的数列作者:不详 来源:互联网  酷勤网收集 2008-04-24


  摘要


  酷勤网  例如:当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,输出满足条件的所有数列。


  输入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]; /*记录分解出的数值的数组*/


  int main()


  {


  int sum,n,total,k,flag,count=0;


  printf("Please enter requried terms(<=10):");


  scanf("%d",&n);


  printf(" their sum:");


  scanf("%d",&total);


  sum=0; /*当前从后向前k个元素的和*/


  k=n; /*从后向前正在处理的元素下标*/


  i[n]=1; /*将最后一个元素的值置为1作为初始值*/


  printf("There are following possible series:\n");


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++超长正整数的加法 下一篇C++编程抛出0xc0000417错误代码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: