天天看點

子集生成方法Subset Generation資料結構、算法與應用C++語言描述

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

繼續閱讀