M==20 N==5 算法
来源:互联网 发布:g92锥度螺纹编程实例 编辑:程序博客网 时间:2024/06/05 02:10
题目:给一个整形M,(假设是20),再给出一个N(是把M分成不相等的比M小的数相加的个数),打印出有几种写法例如:
1+2+3+4+10=20;
解:
int main()
{
int M,N;
cin>>M>>N;
int *l=(int *)malloc(N*sizeof(int));
pn(M,N,l,0);
return 1;
}
//p是数组中位置,如果到最后一位的后一位,打印数组
void pn(int M,int N,int *l,int p)
{
if(p==N)
{
int sum=0;
for(int i=0;i<N;i++)
sum+=l[i];
if(sum==M){
for(int i=0;i<N;i++)
cout<<l[i]<<" ";cout<<endl;
}
return;
}
else{
if(p)
{
if(l[p-1]>=M) return;
for(int i=l[p-1]+1;i<=M;i++)
{
int sum=0;
l[p]=i;
for(int j=0;j<=p;j++)
{
sum+=l[j];
}
if(sum>M)
{return;}
else
{pn(M,N,l,p+1);}
}
}
else{
for(int i=1;i<=M;i++)
{
l[p]=i;
pn(M,N,l,p+1);
}
}
}
}
- 组合数算法 C(n,m)(n>=m)
- 排列数算法A(n,m)(n>=m)
- M==20 N==5 算法
- 证明:gcd(m,n)=gcd(n mod m,m)成立,m,n为正整数,m>0. 【Euclid算法证明】
- 一种算法思想:关于产生m个n范围内的不重复随机数(m<=n)
- 拜占庭将军问题。口头算法OM(n.m);n=3m+1
- 算法:如何高效产生m个n范围内的不重复随机数(m<=n)
- C(n,m)=C(n-1,m-1)+C(n-1,m)
- 计算题 f(m,n)= f(m-1,n)+ f(m,n-1)
- 给定数m,求由n位数的组成m的数列(m>=n>0)
- 最大公约数gcd(m,n)=gcd(n,m%n)之证明
- 例题4-1 输入非负整数n和m,输出组合数,其中m<=n<=20
- 给定两个字符串x、y,设计一个算法来判断是否存在一对正整数m、n,使得x^m = y^n。
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 如何高效产生m个n范围内的不重复随机数(m<=n)
- 打造高绩效团队
- JAVA线程池的简单实现及优先级设置
- 我所认识的软件开发原则:二八原则
- 在 vs 中 调试 lua脚本
- 25.214---物理层过程(同步过程)
- M==20 N==5 算法
- Linux 内核的 LOCK_PREFIX 的含义
- Java虚拟机垃圾收集器分析
- SQL进行排序、分组、统计的10个新技巧
- 数据库连接池, 没有说的那么简单
- 窥探PE文件内幕:Win32 PE 文件格式之旅1
- 回车与换行的区别
- FLASH+XML教程(适用于AS2.0)
- 分析Linux中Spinlock在ARM及X86平台上的实现