组合数的生成(代码加解释)
2013-04-17 11:16
253 查看
# include <stdio.h> //生成从1-n中取m个数的组合,组合从小到大 void born(int n, int m) { int i, j, temp; int a[100]; for (i = 0; i<m; i++) //初始化第一个组合并输出 { a[i] = i+1; printf("%d", a[i]); } printf("\n"); i = 0; //循环终止条件:当组合中第一个数不小于它所能成为的最大值时,退出循环 while (a[i]<n-m+i+1 || i!= 0) { temp = 0; //用来判断组合中是否有数已经达到它的最大值 for (j = 0; j<m; j++) { if (a[j]>=n-m+j+1) //组合中有数达到了最大值,temp=1,终止循环 { temp = 1; break; } } i = j-1; a[i]+=1; //当前应该改变的数+1 if (temp) //有数达到最大值 { if (i == 0) //如果达到最大值的数是第一个,让之后的数为a[i]+1,a[i]+2...... { for (j = 1; j<m; j++) a[j] = a[i]+j; } a[i+1] = a[i]+1; temp = 0; } for (j = 0; j<m; j++) //输出组合数 printf("%d", a[j]); printf("\n"); } } int main() { int n, m; scanf("%d%d", &n, &m); born(n, m); return 0; }
相关文章推荐
- iOS开发——代码生成TabBar与视图切换具体解释
- MDSF:代码生成 VS 模型解释
- vs自动生成代码解释
- MDSF:代码生成 VS 模型解释
- 使用abator自动生成ibatis代码的经验
- php 批量生成缩略图代码
- Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码
- RemObject解决自动生成代码的想法.
- 关于android 代码生成布局中遇到的一些问题
- 根据布局自动生成代码实例化的网站
- 第三十七讲 LINQ to SQL (利用VS自动生成的代码)
- CodeSmith实用技巧(八):生成的代码输出到文件中
- MTCNN中用celebA样本生成landmark训练样本python代码解读
- Android Button Maker:在线生成按钮代码的工具
- 某些情况下,同一份代码但生成的hex文件不一样的解决方法
- Ibatis代码自动生成工具
- yii 利用gii生成代码,出现404错误
- YbSoftwareFactory 代码生成插件【七】:YbRapidSolution for WinForm 插件生成项目总体架构介绍
- [代码生成器] 三. 变量序列化/反序列化代码的自动生成