在笔试面试中经常会遇到求排列组合的题目(或者需求),现在将它们做一个总结。
1.排列数公式与组合数公式
2.思路
参考程序员面试宝典P112,求9位数能被整除的问题(具体请自己去看书),实际上的思路就是利用一个bool型数组记录被占用的位置,DFS求解。这里想指出STL有next_permutation方法。
vector<string> res;
void dfs(int pos, int count, int n, int k, vector<char> data, vector<bool> isUsed)
{
if (count == k) {
string tmp;
for (int i = 0; i < n; i++) {
if (isUsed[i] == true)
tmp.push_back(data[i]);
}
res.push_back(tmp);
return;
}
if (pos ==