void printPermutation(string s, int start, int n) {
if (start>=n) {
cout< < s < < endl;
return;
}
for (int i=start; i<n; ++i) {
swap(s[start], s[i]);
printPermutation(s, start+1, n);
swap(s[start], s[i]);
}
}
just need another line of check for duplicated character.
void printPermutation(string s, int start, int n) {
if (start>=n) {
cout < < s < <endl;
return;
}
for (int i=start; i < n; ++i) {
if (s[i]==s[start] && (i!=start)) continue; // skip duplicate case
swap(s[start], s[i]);
printPermutation(s, start+1, n);
swap(s[start], s[i]);
}
}
No comments:
Post a Comment