#include <iostream>
#include <vector>using namespace std;// 求排列组合算法: C(n, m): 从n个数中任选m个数组成一个新的数, 求有多少种组合, 分别是什么
// 从v[]里任选m个元素组成一个组合, 与顺序无关
template<class T>
vector<vector<T>> fun(vector<T> v, int m)
{if(v.size() < m)return {};              // 找不到这样的组合vector<vector<T>> ret;if(v.size() == m)            // v[]中任选m个数{ret.push_back(v);      // 唯一的一个组合return ret;}else if(m == 1)             // v[]中任选1个数{for(auto& it : v){ret.push_back(vector<T> {it});}return ret;}while(v.size() >= m){auto first = v.front();v.erase(v.begin());// 在剩下的v[1~]中任选m-1个数auto res = fun(v, m - 1);for(auto& it : res){it.insert(it.begin(), first);ret.push_back(it);}}return ret;
}int main()
{vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int m = 3;auto res = fun(v, m);for(auto& it : res){for(auto& it2 : it)printf("%d ", it2);printf("\n");}printf("res.size=%d\n", res.size());return 0;
}

[算法] 求排列组合: 从n个数中任选m个数组成一个新数相关推荐

  1. 从n个数中选取m个数的所有组合

    题目: n个数1,2,...,n,从这n个数中任意选m个数,输出所有不同组合,共有C(n,m)种不同组合.如n=4,m=2,会产生如下输出: 1 2 1 3 2 3 1 4 2 4 3 4如n=5,m ...

  2. c语言实现排列组合:实现matlab中的nchoosek函数

    1.求排列组合结果总数 组合:采用递归算法,根据下面第二行公式. int sumzuhe(int N, int K) {if (K == 0)return 1;if (N == K)return 1; ...

  3. python求斐波那契数列第n个数及前n项和_使用python求斐波那契数列中第n个数的值示例代码...

    斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&qu ...

  4. Java黑皮书课后题第7章:*7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合

    7.28(数学:组合) 题目 题目描述 破题 代码 运行示例 题目 题目描述 *7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合 破题 声明一个长 ...

  5. c语言随机生成n个数求最小值,C语言程序:从N个数中随机取出100个不同的数

    /**你题目中的N个数至少得大于100吧.下面的程序N个数是随机生成 你的N个数是?同时这个程序有错误的话请告诉我. */ /* *从N个数中随机取出100个不同的数 *@author:banxi19 ...

  6. 合并数字 — m个数字消除相邻的差的绝对值为1的两个数中较大的那一个,直到没有两个相邻的差的绝对值为 1 的数(动态数组定义)

    题目:合并数字 消除相邻的差的绝对值为1的两个数中较大的那一个.这一天,她得到了 m 个数字,她只能选出最左边的相邻的差的绝对值为 1 的两个数,保留较小的数,泯灭较大的数,直到没有两个相邻的差的绝对 ...

  7. Nono从一开始数数,他每数一个数时会计算这个数中1的个数(如211中有两个1)并对1的个数进行累和,当1的个数之和不小于x时,Nono就要起床了。特别需要注意的是,当Nono数数达到10000时,N

    [题目描述] 众所周知,Nono是一只喜欢睡懒觉的熊猫."我曾经也是早睡早起,直到我膝盖中了一箭",Nono如是解释道.现在Nono又遇到了一个难题:他睡醒了-但是显然,Nono并 ...

  8. c语言两个线性表la lb,有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合...

    <有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合>由会员分享,可在线阅读,更多相关<有两个集合用两个线性表LA和LB表示即线性表中的数据元 ...

  9. c语言中把各位上为奇数的数取出,下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲。 - 赏学吧...

    下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在冲.高位仍在高位,低位仍在低位.例如当s中的数为87653142时,t中的数为7531. 请改正函数fun ...

最新文章

  1. iir数字滤波器_手把手教系列之一阶数字滤波器设计实现(附代码)
  2. 移动开发框架,第【二】弹:Hammer.js 移动设备触摸手势js库
  3. 【20171031早】sqli-libs Less 16,17 和live http headers 使用问题
  4. MAC 安装jenkins
  5. u-boot中filesize环境变量
  6. blocked by CORS policy,是否跨域?
  7. 企业实战_03_MyCat下载、安装、启动
  8. Linux命令——cut命令学习
  9. 用计算机弹传说之下鱼姐的bgm,传说之下战斗曲曲谱_传说之下打托丽尔的bgm
  10. java day39【HTTP协议:响应消息 、Response对象 、ServletContext对象】
  11. Discuz 2.0 英文版 源码分析 一
  12. 《现代前端技术解析》第七章读书笔记
  13. webview加载百度失败_独家|神秘SDK暗刷百度广告 植入数千款APP
  14. python 批量爬取网页pdf_爬取网页文件并批量解析pdf
  15. 泛泰A860(高通8064 cpu 1080p) 刷4.4专用中文recovery TWRP2.7.1.2版(三版通刷)
  16. Java 读取文件 MD5 sha1 sha256 sha224 sha384 sha512
  17. 企业微信X微盛联合发布会回顾:All in企微赛道两年,微盛的增长逻辑
  18. linux安装Node.js(详细)Node.js安装教程
  19. 渣基础:比照Hawstein学Cracking the coding interview(1)
  20. MySQL基础回顾(六):数据查询语言DQL---select查询语句总结(篇一)

热门文章

  1. 集算器访问HTTP数据的代码示例
  2. 【Linux_Fedora_系统管理系列】_1_用户登录和系统初始配置
  3. Lightbox JS v2.0
  4. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  5. leetcode LCP 19. 秋叶收藏集(dp)
  6. leetcode面试题 08.08. 有重复字符串的排列组合(回溯)
  7. react 示例_2020年的React Cheatsheet(+真实示例)
  8. 您需要了解的WordPress漏洞以及如何修复它们
  9. JavaScript(ES6)传播算子和rest参数简介
  10. 图深度学习-第1部分