编写一个递归算法,找出从自然数1,2,3,…,n中任取r个数的所有组合。例如n=5,r=3时所有组合为543,542,541,532,531,521,432,431,421,321。

若设这n个自然数存放在整数数组A[n]中,A[i]中存放整数i+1(0≤i≤n-1)。

为求从这n个自然数中任取r个数的组合,可采用递归方法 comb(A,n,r)。

例如当n=5,r=3时,首先确定第一个数,如5,再从比它小的剩余的n一1个数中取r一1个数的组合comb(A,n—1,r一1),

即可得到以5开始的全部所要求的组合;

然后再轮流以4,3开始,依此办理,就可得到全部所要求的组合。

递归算法的描述如下。

#include<iostream>
using namespace std;void comb(int A[], int m, int n, int r) {//从A[]中的前m个整数中任取n个整数的所有组合,//r在最初调用时 =n,是为了控制输出使用的。int i, j;for (i = m;i >= n;i--) {A[n - 1] = i;if (n > 1) {comb(A, i - 1, n - 1, r);}else {for (j = r - 1;j >= 0;j--) {cout << A[j];}cout << endl;}}
}int main() {int A[5];for (int k = 0;k < 5;k++) {A[k] = k + 1;}comb(A, 5, 3, 3);
}

让学习多一点欢乐 --景甜

编写一个递归算法,找出从自然数1,2,3,…,n中任取r个数的所有组合。例如n=5,r=3时所有组合为543,542,541,532,531,521,432,431,421,321。相关推荐

  1. 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。

    一个数组中只有两个数字是出现一次,其他所有数字都出现了两次.编写一个函数找出这两个只出现一次的数字. 1.代码编写 2.结果 1.代码编写 代码如下(示例): #define _CRT_SECURE_ ...

  2. 编写一个程序,找出数组中元素的最大值,要求用到成员函数。

    #include<iostream> using namespace std; class Sum {private:int a[10];//定义一个数组; int sum;public: ...

  3. Java黑皮书课后题第8章:**8.17(金融风暴)银行会互相借款……银行的总资产是它当时的余款减去它欠其他银行的贷款。如果一个银行的总资产在某个限以下,那么这个银行是不安全的。编写程序,找出所有不安

    **8.17(金融风暴)银行会互相借款--银行的总资产是它当时的余款减去它欠其他银行的贷款.如果一个银行的总资产在某个限以下,那么这个银行是不安全的.编写程序,找出所有不安全银行 题目 题目描述 破题 ...

  4. Java黑皮书课后题第6章:**6.28(梅森素数)如果一个素数可以写成2^p-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下结果

    6.28(梅森素数)如果一个素数可以写成2^p-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数.编写程序,找出p≤31的所有梅森素数,然后显示如下结果 题目 题目描述 破题 代码 题目 题目 ...

  5. 编写程序,找出用户输入的一串数的最大数,程序需要提示用户一个一个地输入数,当用户输入0或负数时,程序显示出已输入的最大负整数:

    编写程序,找出用户输入的一串数的最大数,程序需要提示用户一个一个地输入数,当用户输入0或负数时,程序显示出已输入的最大负整数: 代码 #include<stdio.h> #include& ...

  6. 编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回。

    编写程序:找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回. 下面展示一些 内联代码片. #include<stdio.h> int main() {int f(int s);i ...

  7. Java黑皮书课后题第6章:**6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数

    6.29(双素数)双素数是指一对差值为2的素数.例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数.编写程序,找出小于1000的所有双素数 题目 题目描述 破题 代码 运行示例 ...

  8. c# 计算圆锥的体积_用c#编写一个程序计算出球、圆柱和圆锥的表面积和体积。...

    2011-04-27 回答 //编写一个程序计算出球,圆柱和圆锥的表面积和体积. //球体表面积a=4π*r^2,体积v=4/3π*r^3 console.writeline("请输入圆的半 ...

  9. c# 计算圆锥的体积_用C#编写一个程序计算出球,圆柱和圆锥的表面积和体积。...

    匿名用户 1级 2014-11-18 回答 //编写一个程序计算出球,圆柱和圆锥的表面积和体积. //球体表面积A=4π*R^2,体积V=4/3π*R^3 Console.WriteLine(&quo ...

最新文章

  1. BZOJ 4009 接水果
  2. 清华大学朱文武团队夺冠AAAI 2021国际深度元学习挑战赛
  3. Matlab GUI 设计(3):edit、slider、table数据同步
  4. Object o与Object o=null的区别
  5. 剑指Offer #05 用两个栈实现队列(模拟)
  6. 校省选赛第一场A题Cinema题解
  7. python函数调用键盘热键_Tkinter对键盘和鼠标事件的处理
  8. springboot+IntelliJ IDEA实现热部署
  9. echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化
  10. 解决Android 输入法InputMethodService 显示时让原Activity大小计算错误问题
  11. Linux自学笔记——iptables
  12. 通过CSS,Jquery实现DIV的各种动作(包括漂移,未测试IE6)
  13. Python pandas使用
  14. 使用电子签章确立电子劳动合同的法律效力
  15. 结合插件实现【IDM+百度网盘】高速下载
  16. 前端开发工程师必备网站
  17. 现在各种云建站,挑两个给大家分析一下。
  18. 十五、2021-11-16Hadoop集群问题记录
  19. 机器学习之PQ量化算法
  20. -R语言中%in%函数的用法

热门文章

  1. leetcode 403青蛙过河
  2. web实时长图实践--摘抄
  3. Expected ']' Expected expression
  4. 2020出行之变(一):自动驾驶的“跃渊”时刻
  5. 遗传算法求取函数最值问题
  6. spark(56) -- SparkMllib -- SparkMllib的功能和应用场景
  7. 计算机学业水平测试基础知识,全国通用信息技术学业水平测试必考知识要点(一)...
  8. 谁,什么地方时间使用了我的人脸识别?
  9. Android项目—帖话APP
  10. 云滋味:微信点餐系统案例分析