数据结构、算法与应用C++语言描述
第一章:25题
编写一个C++递归函数,输入n个元素,输出所有的子集。
#include <algorithm>
#include <iterator>
#include<vector>
template<typename T>
void Func(std::vector<T>& s, int i, int n)
{
// 基础部分(终止递归条件)
if (n == i) {
std::copy(s.begin(), s.end(), std::ostream_iterator<T>(std::cout, " "));
std::cout << std::endl;
}
else{
s[i] = 0; //修改当前位置
Func(s, i + 1, n); // 递归后续位置
s[i] = 1;
Func(s, i + 1, n);
}
}
int main(int argc, char** argv)
{
std::string s("abc");
std::vector<bool> tb(s.size(), 0);
Func(tb, 0, s.size());
}