首页 > 代码库 > 编程算法 - 组合数 代码(C)
编程算法 - 组合数 代码(C)
组合数 代码(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
编程算法 - 组合数 代码(C)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。