/*全排列
*不考虑重复
*/
void permutation1(string &data, int begin, int len) {
if(begin == len - 1) {
cout << data << endl;
}
else {
for(int i = begin; i < len; ++i) {
swap(data[begin], data[i]);
permutation1(data, begin + 1, len);
swap(data[begin], data[i]);
}
}
}
/*全排列
*考虑重复
*/
bool notRepeat(const string &data, int begin, int end) {
for(int i = begin; i < end; ++i) {
if(data[i] == data[end])
return false;
}
return true;
}
void permutation2(string &data, int begin, int len) {
if(begin == len - 1) {
cout << data << endl;
}
else {
for(int i = begin; i < len; ++i) {
if(notRepeat(data, begin, i)) {
swap(data[begin], data[i]);
permutation2(data, begin + 1, len);
swap(data[begin], data[i]);
}
}
}
}
全排列
最新推荐文章于 2024-08-04 08:42:07 发布