码迷,mamicode.com
首页 > 其他好文 > 详细

编程算法 - 组合数 代码(C)

时间:2014-09-23 01:45:23      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:mystra   编程算法   组合数   位全排列   代码   

组合数 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


一个字符串的组合数, 如abc, 输出的是a, b, c, ac, ab, bc, abc, 即包含顺序的组合.

类似位(bit)的全排列, 如 001, 010, 100, 011, 101, 110, 111.


代码:

/*
 * main.cpp
 *
 *  Created on: 2014.7.20
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>
#include <vector>
#include <string>
#include <cmath>

using namespace std;

string BinaryString(string s, int i) {
	string tmp;
	int k=0;
	while (i != 0) {
		if (i & 0x1)
			tmp.push_back(s[k]);
		k++;
		i >>= 1;
	}
	return tmp;
}

vector<string> Combination(string s) {
	vector<string> vs;
	if (s.length() == 0)
		return vs;
	int num = pow(2.0, s.length());
	for (int i=1; i<num; ++i) {
		string tmp = BinaryString(s, i);
		vs.push_back(tmp);
	}
	return vs;
}

int main(void)
{
	string s = "abc";
	vector<string> vs = Combination(s);
	for (size_t i=0; i<vs.size(); ++i) {
		cout << vs[i] << endl;
	}
	return 0;
}





输出:

a
b
ab
c
ac
bc
abc




bubuko.com,布布扣




编程算法 - 组合数 代码(C)

标签:mystra   编程算法   组合数   位全排列   代码   

原文地址:http://blog.csdn.net/caroline_wendy/article/details/39483759

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!