資料結構、算法與應用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());
}