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