组合数(优化)输出数字由大到小输出
2013-10-30 14:28
274 查看
#include<stdio.h> int make_sign[10];//标记数组,如:make_sign[1]=0表示 1这个数字没有走过 int number[10];//用来存 数字 number[3]=1;表示输出的第三个数是1 int n,r;//n:一共有几个数,相当于每次走有几个路径可以选择 void combination(int layer)//layer:当前层数 { int i; if(layer > r) { for( i = 1; i <= r; i ++)//输出数字 { printf("%d",number[i]); } printf("\n"); } else { for(i = n; i > 0; i --) { if(make_sign[i] == 0 && number[layer -1] > i) { make_sign[i] = 1; number[layer] = i; combination(layer+1); make_sign[i] = 0; } } } } int main () { number[0] = 1000; scanf("%d%d",&n,&r); combination(1); return 0; }
相关文章推荐
- C++ 列表List
- 产品经理把脉产品运营的九点心得(转)
- expect实现自动登陆
- Syntax error, type parameters are only available if source level is 1.5 报错(转)
- NYOJ-47 过河问题(贪心)
- 访问外网数据的2种方式
- sed命令
- weblogic下部署原本基于tomcat的Java项目
- PHP对象在内存中的分配
- Jquery 简单切换事件
- cURL简单使用
- Puppet
- mvc路径问题
- Cocos2d-x——HelloWorldScene.cpp的详解
- ubuntu 64位 链接 v8出错 undefined reference to icu_46
- C1FlexGrid 树 模式下的自由拖拽
- uva 11732 - strcmp() Anyone?
- Android笔记之Thread内部不要处理数据
- Hibernate JPA学习(三)
- 学习 参考 资料 网址