算法学习-组合问题递归解法
来源:互联网 发布:微信打开转到淘宝app 编辑:程序博客网 时间:2024/06/10 04:31
问题描述:
从n个整数之中任意选择k个元素,输出所有的组合。
代码实现:
我们采用递归思想进行实现。
代码如下:
#include <iostream>#include <string>using namespace std;void combine(int* pArray, int* pResult, int length, int n, int k) {if (0 == k) {for (int i = 0; i < length; i++) {cout << pResult[i] << " ";}cout << endl;return;}for (int i = n - 1; i >= k - 1; i--) {pResult[k - 1] = pArray[i];combine(pArray, pResult, length, i, k - 1);}}int main(void) {int n, k;cout << "输入元素个数:";cin >> n;cout << "输入单个组合的元素个数:";cin >> k;int *pArray = new int[n];int *pResult = new int[k];cout << "依次输入所有元素, 以空格隔开:" << endl;for (int i = 0; i < n; i++) {cin >> pArray[i];}cout << "组合结果:" << endl;combine(pArray, pResult, k, n, k);return 0;}运行效果:
使用模板:
我们可以定义模板,从而可以对任意类型的元素进行求解。
#include <iostream>#include <string>using namespace std;template<typename T> void combine(T* pArray, T* pResult, int length, int n, int k) {if (0 == k) {for (int i = 0; i < length; i++) {cout << pResult[i] << " ";}cout << endl;return;}for (int i = n - 1; i >= k - 1; i--) {pResult[k - 1] = pArray[i];combine(pArray, pResult, length, i, k - 1);}}int main(void) {int n, k;cout << "输入元素个数:";cin >> n;cout << "输入单个组合的元素个数:";cin >> k;string *pArray = new string[n];string *pResult = new string[k];cout << "依次输入所有元素, 以空格隔开:" << endl;for (int i = 0; i < n; i++) {cin >> pArray[i];}cout << "组合结果:" << endl;combine(pArray, pResult, k, n, k);return 0;}
运行结果:
存在问题
经过测试上述解法效率并不高, 欢迎读者朋友们提供更加高效的实现方案。
1 0
- 算法学习-组合问题递归解法
- 【算法】 组合数问题非递归解法
- 算法学习记录 N皇后问题 递归解法
- 背包问题,递归解法
- 汉诺塔问题递归解法
- Josephus问题递归解法
- 汉诺斯塔问题递归解法
- 汉诺塔问题递归解法
- 全排列问题、八皇后问题、组合问题的递归解法
- [算法]简单的背包问题递归解法,C语言实现
- [算法]数据结构算法背包问题解法之递归解法,C语言实现
- 全组合 递归算法~
- ////////////////递归求组合算法//////////////
- 组合的递归算法
- 组合的递归算法
- 组合算法-递归实现
- JAVA组合递归算法
- 汉诺塔问题之递归解法
- 《Python核心编程》第7章 习题
- 我的Java之旅 第八课 Servlet 进阶API、过滤器与监听器
- seandroid 如何添加被denied的权限(avc denied)
- Spring IOC的配置使用
- 百度IFE前端学院小记
- 算法学习-组合问题递归解法
- Java复习——作业
- cocos2d 中 openssl 加密z
- 猜算式
- Spring IOC容器基本原理
- Swift中协议的简单介绍
- 单例模式的八种写法比较
- Spring IOC基础
- spark菜鸟学习笔记:一、hello word