卓航论坛

标题: C++计算一个数的所有组合数 [打印本页]

作者: [db:作者]    时间: 2016-10-17 16:22
标题: C++计算一个数的所有组合数
计算一个数的组合数, 使用递归进行求解.
如果计算3位的组合数, 首先任选固定一位, 然后计算其余两位的组合数, 最后组合至一起. 如 1 + [23, 32] = 123, 132;
在固定其余位数, 如 2 + [13, 31] = 213, 231;  3 + [12, 21] = 312, 321;
程序分为两步分, 一个删除任意位置的一个元素, 一个是递归求解组合数.
更多精彩内容:http://www.bianceng.cn/Programming/cplus/
代码:
/*
* Combination.cpp
*
*  Created on: 2014.6.9
*      Author: Spike
*/
      
/*eclipse cdt, gcc 4.8.1*/
      
#include [i]  
#include   
#include   
      
using namespace std;  
      
void deleteOneNum (std::string& _num, std::size_t _n) {  
    if (_n >= _num.length()) {  
        return;  
    }  
    string temp (_num.substr(_n+1));  
    _num = _num.substr(0, _n) + temp;  
}  
      
void combination (std::string _num, std::string _buff,  
        std::vector& _result)  
{  
    if (_num.length()  result;  
    combination(num, "", result);  
    for (std::size_t i=0; i
输出:
4123  
4132  
4213  
4231  
4312  
4321  
1423  
1432  
1243  
1234  
1342  
1324  
2413  
2431  
2143  
2134  
2341  
2314  
3412  
3421  
3142  
3124  
3241  
3214
作者:csdn博客 Spike_King
作者: 爱情孤儿    时间: 2016-10-18 00:04
我是个凑数的。。。
作者: aoxiao168    时间: 2016-10-19 13:21
我抢、我抢、我抢沙发~




欢迎光临 卓航论坛 (http://vkeepw.evai.pl/) Powered by Discuz! X3.2