【C++】字符串的排列與組合 代碼實現

排列

void permutation(char* str) {
	if (str == nullptr)
		return;
	_Permutation(str, str);
}
void _Permutation(char* str, char *begin) {
	if (*begin == '\0')
		printf("%s\n", str);
	else {
		for (char* ch = begin; *ch != '\0'; ++ch) {
			char tmp = *ch;		//交換
			*ch = *begin;
			*begin = tmp;
				
			_Permutation(str, begin + 1);	//遞歸

			tmp = *ch;			//還原:否則結果會重複
			*ch = *begin;
			*begin = tmp;
		}
	}
}
  • 輸入:abc
  • 輸出:
    在這裏插入圖片描述

組合

void Combination(char* str) {
	size_t len = strlen(str);
	for (int i = 1; i < (1 << len); ++i) {
		for (int j = 0; j < len; ++j) {
			if (i & (1 << j))
				cout << str[j];
		}
		cout << endl;
	}
}
  • 輸入:123
  • 輸出:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章