NYOJ-32-组合数
2016-05-25 03:11
253 查看
描述
找出从自然数1、2、… 、n(0< n <10)中任取r(0< r <= n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543
542
541
532
531
521
432
431
421
321
一道相当于剪了枝的dfs,也可以理解为全排列的一部分。
找出从自然数1、2、… 、n(0< n <10)中任取r(0< r <= n)个数的所有组合。
输入
输入n、r。
输出
按特定顺序输出所有组合。
特定顺序:每一个组合中的值从大到小排列,组合之间按逆字典序排列。
样例输入
5 3
样例输出
543
542
541
532
531
521
432
431
421
321
一道相当于剪了枝的dfs,也可以理解为全排列的一部分。
#include <stdio.h> #include <string.h> #include <math.h> int flag[10]; int n, r; void dfs(int place, int rule, int num) //非全排列,保持高位始终大于低位 { if (place == 0) { printf("%d\n", num); } for (int i = rule; i > 0; i--) { if (!flag[i]) { flag[i] = 1; dfs(place - 1, i - 1, num + i * pow(10, place - 1)); flag[i] = 0; } } return ; } int main(int argc, const char * argv[]) { while (~scanf("%d %d", &n, &r)) { memset(flag, 0, sizeof(flag)); dfs(r, n, 0); } return 0; }
相关文章推荐
- Android与Swift iOS开发:语言与框架对比
- Android NDK详解
- 文本分析常用R包的安装(Rweibo、wordcloud、tm、tmcn、Rwordseg)
- 【Android】自定义LinearLayout实现侧滑布局--SwipeLinearLayout
- leetcode #32 in cpp
- 有关网络编程的一些面试
- OSChina 周三乱弹 ——掌握写代码核心科技的名人们!
- Ubuntu安装mongoDB
- NYOJ-28-大数阶乘
- 万万不要痴迷于求知,却从无创作
- ElasticSearch环境搭建
- [Ruby笔记]14.Ruby local_variable
- tableview中cell设置的注意事项
- 用python记录运行pid,并在需要时kill掉它们
- cs231n 卷积神经网络与计算机视觉 2 SVM softmax
- [Ruby笔记]13.Ruby object .replace("") .dup .freeze
- Android开发:shape和selector和layer-list的(详细说明)
- iOS之CoreImage图像处理框架
- NYOJ-27-水池数目
- cocos2d-x 两个场景间进行传参数