您的位置:首页 > 编程语言 > C语言/C++

满足特异条件的数列

2017-05-22 21:17 627 查看
输入  m 和 n(20>=m>=n>0)求出满足以下方程式的正整数数列i1,i2,........,in,使得:i1 + i2 + ...... +in = m,且i1>=i2>=.....>=in, 例如:当n=4,m=8时,将得到如下五个数列:

5   1   1   1                          4   2   1   1                  3   3   1   1                3   2   2   1                     2   2   2   2

#include<stdio.h>

#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=n; 
i
=1; 
printf("There are following possible series:\n");
while(1)
{
if(sum+i[k]<total)
{
if(k<=1) 
{
i[1]=total-sum;
flag=1;

else
{
sum+=i[k–];
i[k]=i[k+1]; 
continue;
}
}
else 
if(sum+i[k]>total||k!=1) 

sum-=i[++k]; 
flag=0;

else 
flag=1; 
if(flag)
{
printf("[%d]:",++count);
for(flag=1;flag<=n;++flag)
printf("%d",i[flag]);
printf("\n");
}
if(++k>n)
break;
sum-=i[k];
i[k]++; 
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐